正则表达式捕获单引号字符串

时间:2015-08-11 11:51:12

标签: regex regex-greedy

我正在使用.net正则表达式引擎,我需要一个正则表达式模式来捕获单引号中的子串。

我有什么:

(?<!\\p{L})['‘]+(s['’] \\p{Lu}|['’]\\p{L}|[^‘'’\r])*['’]+((?<!s['’])(?! \\p{Lu})|(?!\\p{L}))

我认为它如何运作:

  1. 非捕获非字母数字,后跟1-many单引号

    (?<!\\p{L})['‘]+

  2. 0-多组(&#34; s&#34; +撇号+空格+大写字母OR撇号+小写字母或不是撇号或换行符) (s['’] \\p{Lu}|['’]\\p{L}|[^‘'’\r])*

  3. 1-many收盘价 ['’]+

  4. 最后验证:(不是s +撇号,而不是前面的空格+大写字母)或者不是前面的字母 ((?

  5. 它应该如何运作: 例如。 &#34;这是我的猴子黑猩猩&#39;农场&#34; 期望的结果:&#39;猴子的黑猩猩&#39; 我目前得到的是:&#39;猴子&#39;

    说明:&#39; s不应被视为收尾报价。 s&#39;也不应该如果后跟一个空格和另一个大写字母。

    问题:为什么发动机停在猴子的撇号上?在上面的第2节中,它应该捕获&#34;&#34;&#34;&#34;然后继续发动机很贪心,对吧?

    感激不尽的任何帮助