我想要一个正则表达式来匹配所有这些:
startabcendstartdefblahstartghiendblahstartjklendsomething并返回abc,def,ghi和jkl分别.
我有以下这个适用于案例1和3,但我很难使前瞻可选.
(?<=start).*(?=end.*)
Run Code Online (Sandbox Code Playgroud)
编辑:
嗯.不好的例子.实际上,中间的位不是数字,而是先于一组特定的字符,并且可选地由它继续.我已根据要求更新了输入和输出,并添加了第4个示例以回应某些问题.
Amb*_*ber 13
试着在各行之间阅读,看起来好像你不想在这里期待,你实际上想要非贪婪.*?.
(?<=start).*?(?:end)?$
Run Code Online (Sandbox Code Playgroud)
我的猜测是你试图匹配类似的东西"start123end",但不希望它end或者start出现在匹配的文本中,因此你在那里有一个看起来断言来约束.*通常贪婪的东西.
相反,您可以使用非贪婪变体并使用a锚定模式的右端$.
(或者,如果您能够使用捕获组,则应该这样做:
start(.*?)(end)?$
Run Code Online (Sandbox Code Playgroud)
然后从第一个捕获组中获取值.)
ste*_*ema 12
也许是这样的:
(?<=start).*?(?=(?:end|$))
Run Code Online (Sandbox Code Playgroud)
这将匹配到"开始"和"结束"或直到行尾,此外量词必须是非贪婪的(.*?)
在Regexr上看到它
将Regexr上的示例扩展为不仅可以使用数字.
| 归档时间: |
|
| 查看次数: |
9492 次 |
| 最近记录: |