我正在使用.net正则表达式引擎,我需要一个正则表达式模式来捕获单引号中的子串。
我有什么:
(?<!\\p{L})['‘]+(s['’] \\p{Lu}|['’]\\p{L}|[^‘'’\r])*['’]+((?<!s['’])(?! \\p{Lu})|(?!\\p{L}))
我认为它如何运作:
非捕获非字母数字,后跟1-many单引号
(?<!\\p{L})['‘]+
0-多组(&#34; s&#34; +撇号+空格+大写字母OR撇号+小写字母或不是撇号或换行符)
(s['’] \\p{Lu}|['’]\\p{L}|[^‘'’\r])*
1-many收盘价
['’]+
最后验证:(不是s +撇号,而不是前面的空格+大写字母)或者不是前面的字母 ((?
它应该如何运作: 例如。 &#34;这是我的猴子黑猩猩&#39;农场&#34; 期望的结果:&#39;猴子的黑猩猩&#39; 我目前得到的是:&#39;猴子&#39;
说明:&#39; s不应被视为收尾报价。 s&#39;也不应该如果后跟一个空格和另一个大写字母。
问题:为什么发动机停在猴子的撇号上?在上面的第2节中,它应该捕获&#34;&#34;&#34;&#34;然后继续发动机很贪心,对吧?
感激不尽的任何帮助
答案 0 :(得分:0)
放手一搏。 &#34; Lookaround&#34;的技术似乎很合适。
我也使用.NET
(?!'s\b)'.*?'(?!s\b)
(?!'s\b)
'
.*?
'
(?!s\b)