针对此示例文本:
"The quick brown fox jumps over the lazy dog"是一句包含英语字母表中所有字母的1*** 英语平板词组。它通常用于打字练习。它还用于测试打字机和计算机键盘、显示字体以及其他涉及英语字母表中所有字母的应用程序4***。
我需要一个正则表达式,可以匹配在多个 x*** 标记之间,并剥离前导和尾随空格。如果我的正则表达式知识有限,则结果应该能够匹配成两个单独的“lookaround”组。
English-language
English alphabet
我有两个表达式分别单独运行时可用,但合并后不起作用:
(?<=1\*\*\*\s).*(?=\s2\*\*\*)
....
(?<=3\*\*\*\s).*(?=\s4\*\*\*)
我试过各种方法将它们合并成一个表达式,但只得到了不正确的结果。例如:
(?<=1\*\*\*\s).*(?=\s2\*\*\*)\w+(?<=3\*\*\*\s).*(?=\s4\*\*\*)
没有匹配项
需要指出的是,我对令牌格式有控制权,因此请自由推荐一个基于正则表达式易于使用的格式。它只需要包含大部分非字母数字字符序列,以便在数据中不存在本地找到。 我猜我可能需要至少两个令牌;一个开始,一个结束。
编辑: 我已经取得了一些进展,但我的正则表达式引擎的行为与regex101上的不同:
(?<=1\*\*\*\s)(.*)(?=\s2\*\*\*).*?(?<=3\*\*\*\s)(.*)(?=\s4\*\*\*)
结果是:
英文 2*** 3*** 英文
为什么会这样? 如何纠正?
\d+\*{3}\s*(.*?)\s*\d+\*{3}
。 - Wiktor Stribiżew(?s)\d+\*{3}\s*(?<g1>.*?)\s*\d+\*{3}.*?\d+\*{3}\s*(?<g2>.*?)\s*\d+\*{3}
],并使用g1
和g2
组? - Wiktor Stribiżew