正则表达式匹配句子

时间:2016-10-22 09:31:12

标签: java regex

我使用了正则表达式

(.*)(\s){1}([0-9]*min|lightning)\b  

匹配如下字符串:

  1. 针对Enterprise Rails编写快速测试60分钟

  2. Clojure Ate Scala(在我的项目中)45分钟

  3. 会计驱动型发展45分钟

  4. 匹配组将给出:

    1. 针对企业Rails编写快速测试

    2. 空间

    3. 60分钟

    4. 但像???????????????????? 60min这样的字符串也匹配。

      任何人都可以帮我解决这个问题吗?

      更新

      根据答案,正如下面的正则表达式将解决它,但输入3

       ^([^XX]*)(\s){1}([0-9]*min|lightning)\b$
      
      1. 我想允许 - 以便输入3匹配。字符串如下所示 也匹配哪个不正确

      2. 第1组应仅包含字母

        ------------ 60min

      3. 请参阅链接https://regex101.com/r/JH5sl1/6

1 个答案:

答案 0 :(得分:0)

(export CFLAGS="-fexceptions ${CFLAGS-}";./configure --some-option -what-ever; make) 更改为configure

它将确保您只匹配字符串开头的字母数字和空格。请参阅demo

由于问题在不断发展,让我们以另一种方式解决问题。将正则表达式更改为:

(.*)(\s){1}([0-9]*min|lightning)\b

^([\w ]*)(\s){1}([0-9]*min|lightning)\b$更改为不想匹配的内容。它被称为否定字符类,并允许您拒绝"它包含的字符。

如果您想避免出现两个连续的非字母数字字符,可以使用否定前瞻:

^([^XX]*)(\s){1}([0-9]*min|lightning)\b$
  ^^^^^

Demo