如何使用正则表达式匹配字符串中的第n个出现

面包店

如何使用正则表达式匹配字符串中的第n个出现

设置测试{stackoverflowa是发现站点的最佳解决方案stackoverflowb是发现站点的最佳解决方案stackoverflowc是发现站点的最佳解决方案stackstackoverflowd是发现最佳的解决方案sitestackoverflowe是发现最佳的解决方案的站点}

regexp -all {stackoverflow} $test 

上面的给出“ 5”作为输出

regexp {stackoverflow} $test 

上面的一个给出了stackoverflow的结果,这里它匹配第一次出现的stackoverflow(即stackoverflowa)

我的要求是我想匹配上述给定字符串第5次出现stackoverflow(即stackoverflowe)。

请有人澄清我的问题。谢谢

然后另一个问题

彼得·勒维林

尝试

set results [regexp -inline -all {stackoverflow.} $test]
# => stackoverflowa stackoverflowb stackoverflowc stackoverflowd stackoverflowe
puts [lindex $results 4]

我将稍后再作进一步解释,现在做煎饼。

所以。

该命令返回包含在字符串中的-inline所有(-all)子字符串的列表(),该子字符串test与字符串“ stackoverflow”(较少的引号)相匹配,再加上一个字符(可以是任何字符)。该列表存储在变量中result,并且通过用4进行索引(因为索引是从零开始的),可以检索(并在这种情况下打印)该列表的第五个元素。

表达式末尾的点不在您的表达式中:我添加了它以检查是否确实找到了正确的匹配项。您当然可以省略该点以完全匹配“ stackoverflow”。

ETA(来自Donal的评论):在许多情况下,提取字符串本身而不是提取字符串在搜索字符串中的位置和范围很方便。-indices选项为您提供了这一点(我现在不在表达式中使用点:索引列表使我无论如何都会获得“ stackoverflow”之一):

set indices [regexp -inline -all -indices {stackoverflow} $test]
# => {0 12} {47 59} {94 106} {140 152} {186 198}

然后,您可以string range用来获取字符串匹配项:

puts [string range $test {*}[lindex $indices 4]]

lindex $indices 4给我的名单186 198; {*}前缀使得在该列表中的两个元素出现在的调用两个独立的参数string range

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何从字符串中提取正则表达式匹配的第n次出现?

来自分类Dev

如何在obj-C中用正则表达式替换字符串中第N个出现的字符串

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

正则表达式构建字符串,直到遇到第N个匹配项

来自分类Dev

如何使用正则表达式仅匹配每行中第一次出现的字符串

来自分类Dev

如何使用正则表达式拆分字符串,开头字符与此 <= | 中的任何一个匹配 >= | = | !=

来自分类Dev

字符串C#中正则表达式的第n个匹配项的索引

来自分类Dev

如何使用正则表达式匹配字符串中的两个或多个点

来自分类Dev

如何使用正则表达式匹配字符串中的两个或多个点

来自分类Dev

如何使用正则表达式匹配单引号或双引号中的字符串

来自分类Dev

如何使用正则表达式匹配文本中的顺序字符串?

来自分类Dev

如何使用正则表达式匹配字符串中的多个单词?

来自分类Dev

如何使用正则表达式匹配字符串中的模式

来自分类Dev

在JavaScript中第n次出现正则表达式时拆分字符串

来自分类Dev

在javascript中第n次出现正则表达式时拆分字符串

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

使用正则表达式匹配字符串?

来自分类Dev

正则表达式将字符串与第n个特定字符串匹配到最后一个单词

来自分类Dev

如何正则表达式匹配和正则表达式替换php中的字符串

来自分类Dev

使用正则表达式顺序匹配正则表达式,而不是JavaScript中的字符串顺序

来自分类Dev

如何使用sed仅返回正则表达式匹配的第n次出现?

来自分类Dev

如何完全丢弃与正则表达式模式不匹配的字符串的出现?

来自分类Dev

正则表达式匹配字符串中的所有出现

来自分类Dev

正则表达式匹配第n个竖线字符后的子字符串

来自分类Dev

使用正则表达式来匹配无序字符组(在子字符串中)的优雅方法,同时限制给定字符的出现时间如何?

来自分类Dev

JavaScript正则表达式-从字符串中获取第N个数字

来自分类Dev

如何用正则表达式匹配字符串中的一个或多个字符?

来自分类Dev

如何使用正则表达式匹配数字而不匹配字符串?

来自分类Dev

正则表达式匹配最多由N个单词分隔的子字符串

Related 相关文章

  1. 1

    如何从字符串中提取正则表达式匹配的第n次出现?

  2. 2

    如何在obj-C中用正则表达式替换字符串中第N个出现的字符串

  3. 3

    正则表达式构建字符串,直到遇到第N个匹配项

  4. 4

    正则表达式构建字符串,直到遇到第N个匹配项

  5. 5

    如何使用正则表达式仅匹配每行中第一次出现的字符串

  6. 6

    如何使用正则表达式拆分字符串,开头字符与此 <= | 中的任何一个匹配 >= | = | !=

  7. 7

    字符串C#中正则表达式的第n个匹配项的索引

  8. 8

    如何使用正则表达式匹配字符串中的两个或多个点

  9. 9

    如何使用正则表达式匹配字符串中的两个或多个点

  10. 10

    如何使用正则表达式匹配单引号或双引号中的字符串

  11. 11

    如何使用正则表达式匹配文本中的顺序字符串?

  12. 12

    如何使用正则表达式匹配字符串中的多个单词?

  13. 13

    如何使用正则表达式匹配字符串中的模式

  14. 14

    在JavaScript中第n次出现正则表达式时拆分字符串

  15. 15

    在javascript中第n次出现正则表达式时拆分字符串

  16. 16

    使用正则表达式匹配字符串?

  17. 17

    使用正则表达式匹配字符串?

  18. 18

    正则表达式将字符串与第n个特定字符串匹配到最后一个单词

  19. 19

    如何正则表达式匹配和正则表达式替换php中的字符串

  20. 20

    使用正则表达式顺序匹配正则表达式,而不是JavaScript中的字符串顺序

  21. 21

    如何使用sed仅返回正则表达式匹配的第n次出现?

  22. 22

    如何完全丢弃与正则表达式模式不匹配的字符串的出现?

  23. 23

    正则表达式匹配字符串中的所有出现

  24. 24

    正则表达式匹配第n个竖线字符后的子字符串

  25. 25

    使用正则表达式来匹配无序字符组(在子字符串中)的优雅方法,同时限制给定字符的出现时间如何?

  26. 26

    JavaScript正则表达式-从字符串中获取第N个数字

  27. 27

    如何用正则表达式匹配字符串中的一个或多个字符?

  28. 28

    如何使用正则表达式匹配数字而不匹配字符串?

  29. 29

    正则表达式匹配最多由N个单词分隔的子字符串

热门标签

归档