【问题标题】:Regex that can capture part of string like "letter+whitespace+letter+whitespace..."可以捕获部分字符串的正则表达式,例如“字母+空格+字母+空格...”
【发布时间】:2017-10-12 06:21:33
【问题描述】:

我需要一个模式来删除部分字符串,如“字母+空格+字母+空格...”直到第一个点。例如,在字符串中

D o c t o r。我会给你开处方。

pattern 应该匹配 "D o c t o r." 现在我有一个模式([A-Za-z]\s?)+\. 但它匹配更多我需要的子字符串。任何想法如何纠正它?非常感谢。

【问题讨论】:

  • 你能详细说明它匹配你不想匹配的内容吗?
  • 你真的需要匹配任何空格还是只匹配一个空格?

标签: regex


【解决方案1】:

如果您需要在每个字母之前有一个单词边界,则字母之间需要有空格。现在,可以匹配连续的字母,因为空格模式是可选的(出现 1 或 0 次)。

所以,你可以使用

(\b[A-Za-z]\s?)+\.

见this regex demo

或者,或者,使用

\b[A-Za-z](?:\s[A-Za-z])+\.

请参阅regex demo。这里,

  • \b - 匹配前导词边界
  • [A-Za-z] - 一封信
  • (?:\s[A-Za-z])+ - 1 个或更多(注意,如果您还想匹配 1 个字母 + 点序列,请将 + 替换为 * 量词)连续出现
    • \s - 一个空格
    • [A-Za-z] - 一封信
  • \. - 一个点。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-09-12
    • 2014-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-01
    相关资源
    最近更新 更多