我试图编写一个正则表达式:
1)抓住一个紧接在' Seite'之后的小组。后跟一个或多个空格(但没有空格以外的文字),将被引用为\ 1
2)紧接着这个小组(即\ 1)但不再包括
一个有效的例子是:
输入:Seite120 kljwqenflkjqwef 120
输出:120 kljwqenflkjqwef
我不确定如何使这项工作。我最好的尝试是:
((?<=Seite)(?=\s)).*(?=\1)
RegExp的任何人都可以比我更好吗?
答案 0 :(得分:1)
捕获零宽度断言只会导致组缓冲区内出现空字符串。
您可以使用
Seite\K(\S+)\s+\S.*?(?=\s*\1)
请参阅regex demo
<强>详情:
Seite
- 子字符串Seite
\K
- 匹配重置运算符,丢弃目前为止匹配的文本(\S+)
- 第1组捕获1个非空白符号\s+
- 1+空格\S
- 非空白.*?
- 任意0个字符,尽可能少,直至第一个(?=\s*\1)
- 0+空格后跟第1组的内容(因为此模式是前瞻的一部分,与此构造匹配的文本不会添加到匹配值中)。答案 1 :(得分:0)
在评论中,您表明您正在为JavaScript编写正则表达式。因此,回答您最初的问题,即您收到错误的原因&#34;前面的令牌无法量化&#34;这是因为你正在使用断言(?<=Seite)
后面的内容,并且在JavaScript中不支持断言。正则表达式的?<=
部分无法由JavaScript正则表达式引擎解释。