我有这样的字符串:
\ 24s904dS \ 24sr4d2 \ 24的 X \\ÿ\\ 12Z:234F \\ 3dRl \ 24o980 \ 24
我只想匹配粗体部分:
x\\y\\12z:234F\\3dRl
我可以用这个正则表达式来照顾正确的非贪婪:
\\24(.*:.*?)\\24
但仍然无法找到如何处理左派的非贪婪。
答案 0 :(得分:3)
修改您的模式如下
.*\\24(.*:.*?)\\24
答案 1 :(得分:3)
您可以使用此否定前瞻为基础的正则表达式:
\\24((?:.(?!\\24))*:.*?)\\24
重要的部分是这种基于前瞻性的正则表达式模式(?:.(?!\\24))*
,这意味着如果不遵循\24
则匹配字符。这基本上可以确保最邻近的 \24
匹配。
输出匹配:
x\\y\\12z:234F\\3dRl
答案 2 :(得分:2)
不是修改贪婪,而是编写更精确的正则表达式更好:
\\24([a-zA-Z0-9]+:[a-zA-Z0-9]+)\\24
(非贪婪的修饰符确实是解决问题的最佳方法,这种情况相对较少。)