【问题标题】:Regex to match missing period (.) before end tag正则表达式匹配结束标记之前缺少的句点 (.)
【发布时间】:2013-03-20 08:46:41
【问题描述】:

如何使用正则表达式匹配结束标记前缺少的句点 (.)?

为了清楚起见,这里有一个示例:

样本需要匹配:

1. text</… ></tag> ---> Where </...> is any tag and can be multiple end tags

2. text</tag>  

不需要匹配的正确样本:

1. text.</...></tag>
2. text.</tag>

我想忽略这样的事情:

,</tag>   --> Where , can be any punctuation except period (.)

,</...></tag>

希望有人能帮助我,非常感谢!

【问题讨论】:

  • 我很困惑...您想匹配结束标记前有句点的地方吗?或者您想匹配结束标记前没有句点的地方?
  • 如果您提供纯文本示例,而不是混合正则表达式和文本,会更清楚。
  • 请看我的编辑。谢谢!

标签: regex


【解决方案1】:

只需使用[^\.]。这将匹配除. 之外的任何内容 在您的情况下,您需要使用[^\.&gt;]&lt;/

【讨论】:

  • 如何检查这是否在 之前?而在之前有时会出现这种情况,,而可以在之前出现多次
  • 让它发生吧!如果您的字符串的任何部分中有任何text&lt;/,那么这将检查它
  • 但我只需要匹配那些在 之前没有句点 (.) 的文本。所以你的意思是说我会匹配文本,即使它不在之前
  • 我的意思是如果它不在之前,我不需要匹配没有句点的文本。例如“这是一个文本”。您的答案将匹配“文本”,我不想发生这种情况,因为它不在
【解决方案2】:

[,;:] 将匹配任何标点符号除了句点。随意扩展(因为我不确定您是否需要撇号、引号、斜杠等字符)

您也可以使用[^,;:] 来否定它,其中^ 代表不在字符集中。

参考this

【讨论】:

【解决方案3】:

这就是我对我的问题所做的:

([^.:;(or)(and)\!\)()>])(\</.*?\>)\</tag\>

这将匹配结束前没有句点 (.) 的文本:

text</otherEndTag>...</tag>

但是标点列表会被忽略:

: ; ! ) ( > , or , and

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-11-29
    • 2012-08-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-07-25
    相关资源
    最近更新 更多