这是this question的后续内容(不过我没有问)。试图回答时,我遇到了几个问题。你知道吗
考虑字符串strings123[abc789<span>123</span>def<span>456</span>000]strings456
,如何匹配方括号中没有被Python
标记包围的数字(使用较新的regex
模块)?
在示例字符串中,这将是789
和000
。
\G
就像(demo)
(?:\G(?!\A)|\[)
[^\d\]]*
\K
\d+
和(*SKIP)(*FAIL)
(demo):
<span>.*?</span>(*SKIP)(*FAIL)
|
\d+
但无法同时合并statements:
<span>.*?</span>(*SKIP)(*FAIL)
|
(?:
(?:\G(?!\A)|\[)
[^\d\]]*
(\d+)
[^\d\]]*
\K
)
如何做到这一点?你知道吗
我喜欢PyPi regex module的一点是它支持无限宽lookback:
图案细节:
(?<=\[[^][]*)
-必须有一个[
,紧跟在当前位置左侧的]
和[
之外的零个或多个字符(?:
-非捕获组开始<span>[^<]*</span>(*SKIP)(?!)
-匹配一个<span>
,然后匹配除<
以外的0+个字符(使用[^<]*
取反的字符类),然后匹配一个</span>
,并在保持匹配结束位置的同时放弃匹配,然后继续查找下一个匹配|
-或\d+
-1+位(?=[^][]*])
-在当前位置右侧的]
和[
之外的零个或多个字符后面必须有一个]
。你知道吗我想到了一个如下的算法。你知道吗
搜索方括号和其中的内容,并将结果存储在变量中。正则表达式应该是^{} 。
现在搜索} 。
<span>
标记并将其替换为-
,以简化下一步。正则表达式应该是^{现在您将看到方括号中的内容,而不是} 搜索匹配数字。
<span>
标记中的内容。只需用^{相关问题 更多 >
编程相关推荐