我正在尝试找出一个很好的正则表达式行来匹配以下内容:
1:[any chars here except newlines]|1:[any chars here except newlines]...
我希望我的正则表达式能够匹配这种类型的无限次重复。我最接近弄清楚的是 '(1:[^|]*\|)\1+'
,但它不起作用有两个原因。首先,它只会找到在字符串末尾有一个附加竖线的字符串。其次,第一次捕获中的文本必须始终相同。
我可以使用拆分来解决这个问题,但我只是想知道是否有在正则表达式中执行此操作的好方法。
最佳答案
将量词应用于整个组:
^(?:1:[^|\n]*\|?)+(?<!\|)$
^
断言字符串开头的位置。然后匹配 1:
后跟任何不是 |
的字符或换行符,零 次或多次(由 *
表示)。整个组可以重复一次 或多次(由 +
表示)。 (?<!\|)
是一个否定的回顾,断言最后一个字符不是 |
. $
断言字符串末尾的位置。
它匹配所有这些:
1:foo
1:foo|1:bar
1:foo|1:bar|1:baz
1:foo|1:bar|1:baz|1:bak
但不会匹配
1:foo|
和类似的。
关于python - 在正则表达式中重复正则表达式 block ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26974209/