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

Regex 用正则表达式解析出包含特定字符串模式的单个完整句子,regex,Regex,我有一串中文文本: xxxxx.xxxx.xxx.xxx.xxxxx.xxxxxxxx 如何使用正则表达式解析包含字母“C”的句子 xxxxxxx 正则表达式: /。.+?C.+?。/ 给出了这个结果: "。xxxx。xxx。xxx。xxxxx。xxxCxxxx。" 更新: 找到答案:[^.]*C[^.]* 有人能解释为什么/[^.]*C[^.]*./有效而/..+?C.+./无效吗?解决方案是:[^.]*C[^.]*. 要回答原始regex/..+?C.+?./的问题,您需要解释为什么它

我有一串中文文本:

xxxxx.xxxx.xxx.xxx.xxxxx.xxxxxxxx

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

xxxxxxx

正则表达式:

/。.+?C.+?。/
给出了这个结果:

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

更新:

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


有人能解释为什么
/[^.]*C[^.]*./
有效而
/..+?C.+./
无效吗?

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

要回答原始regex
/..+?C.+?./
的问题,您需要解释为什么它不起作用,请执行以下操作:

  • 它将首先匹配
  • 然后,
    +?C
    将继续提取字符,直到找到C为止,因此 整个东西都会匹配:
    xxxx.xxx.xxx.xxxxx.xxx
  • 一旦找到C,正则表达式的最后一部分将在 行动。它把所有的东西都带到下一个

    因此您得到的结果是:
    .xxxx.xxx.xxx.xxxxx.xxxcxxxxx。

  • 这个
    [^.]*C[^.]*.
    适合您,因为:

  • [^.]*C
    获取的任何内容都不是;这些都是必须遵循的 通过C使其成为
    xxxC
  • [^.]*.
    它再次获取除.以外的任何内容,并在找到时停止 和它匹配

  • 可以找到类似的问题。如果社会人士认为这是多余的,我可以删除这项质询。