【问题标题】:Regex matching left single quotation outside the double quotations正则表达式匹配双引号外的左单引号
【发布时间】:2012-08-24 05:11:33
【问题描述】:

注意:

左双引号 (") = &ldquo

右双引号 (") = &rdquo

左单引号 (') = &lsquo

我目前的正则表达式是这样的

(?<!.*&ldquo.*)&lsquo

它与这里的&lsquo匹配(这是正确的):

&ldquoThis is a sample&rdquo &lsquosample text

它也与这里的 &lsquo 匹配(我不希望发生这种情况,因为单引号在左右双引号内):

&ldquoThis &lsquois a sample&rdquo

如何编写一个正则表达式来匹配不在左右引号内的每个 &lsquo

感谢您的帮助!

【问题讨论】:

  • right single quote 怎么样。它是否存在..请正确解释你真正想要的东西!带有 VALIDINVALID 的列表b> 例子...
  • 我不太明白您在这里要做什么,但我感觉您正在尝试解析非正则表达式。如果引号被嵌套然后再次嵌套会发生什么?

标签: c# .net regex lookbehind


【解决方案1】:

如果我理解你的问题..这可能就是你想要的

(?<!&ldquo.*?)&lsquo(?!&rdquo)

【讨论】:

  • 我需要匹配所有&ldquo和&rdquo之外的&lsquo,
  • 感谢您的回答!有了这个,我为我的问题找到了正确的正则表达式。
【解决方案2】:

使用 ASCII 转义序列告诉正则表达式您指的是哪些字符。

  • \x93 - 指&ldquo
  • \x94 - 指&rdquo

所以你需要的正则表达式是:[\x93]*[^x94]

或者,如果您知道您的字符串由哪些字符组成,那么:[A-Za-z0-9\x93]*[^x94],依此类推。根据需要添加更多字符。

【讨论】:

  • 不,我需要匹配不在&ldquo和&rdquo内的&lsquo,例如&lsquosample&rsquo &ldquosample text&rdquo。
【解决方案3】:

这是我正在查看的正确正则表达式:

(?<!.*&ldquo;)&lsquo;(?!.*&rdquo;)

谢谢!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-04-08
    • 1970-01-01
    • 1970-01-01
    • 2016-12-13
    • 1970-01-01
    相关资源
    最近更新 更多