使用正则表达式解析包含特定字符串模式的单个完整句子

时间:2017-10-05 05:01:12

标签: regex

我有一串中文文字:

  

xxxxx.xxxx.xxx.xxx.xxxxx.xxxCxxxx。

如何使用正则表达式解析包含字母“C”的句子?

  

xxxCxxxx。

正则表达式:

/。.+?C.+?。/

给出了这个结果:

"。xxxx。xxx。xxx。xxxxx。xxxCxxxx。"

更新

找到答案:[^。]*C[^。]*

任何人都可以解释为什么/[^。]*C[^。]*。/有效且/。.+?C.+?。/没有?

1 个答案:

答案 0 :(得分:1)

解决方案是:[^。]*C[^。]*。

要回答原始正则表达式/。.+?C.+?。/的问题,您希望解释它为什么不能正常工作:

  1. 首先匹配
  2. 然后.+?C将继续提取字符,直到找到C为止 整件事情将匹配:xxxx。xxx。xxx。xxxxx。xxx
  3. 找到C后,正则表达式.+?。的最后一部分将会出现 行动。它将所有内容提取到下一个。

    因此,您会得到结果:。xxxx。xxx。xxx。xxxxx。xxxCxxxx。

  4. 这一个[^。]*C[^。]*。适用于您,因为:

    1. [^。]*C取出任何东西。那些必须遵循的东西 由C使其成为xxxC
    2. [^。]*。它再次取出任何东西,并在找到时停止。 并匹配它。