正则表达式匹配所有组合

正则表达式匹配所有组合

下面是我的文字。我该如何编写正则表达式来捕获与 相关的所有文本REQ_XXX

这是我的表情.*(REQ_.*)\|,但它捕捉到了|3 |4 |5。我只想让它在|看到第一个表情后停止。

在此处输入图片描述

答案1

您可以使用 :

.*(REQ_[^|]*)\|

“|”字符将被排除。

答案2

编辑:

.*(REQ_.*?)\|

诀窍是?让前面的.*尽早停止。这样,|后面的第一个就会终止 的范围.*。这正是您想要的。

以下是我以前的回答。效果很好,但我认为上面的方法是正确的。


旧答案:

.*匹配(几乎)所有内容,包括|。用于[^|\n]*匹配除|换行符之外的所有内容。

.*(REQ_[^|]*)\|

\n是必需的,因为 pure[^|]*的匹配可能会跨越多行。我猜你不想要这个。

答案3

有些解决方案已经发布在其他答案中,我在这里给出一个总结。

您可以在此处采用多种方法,您需要根据您的需要决定使用哪一种方法:

  1. 给出代码中出现的字符的肯定列表:
    .*(REQ_[\w]+)[\s]*\|
    • 在这种情况下[\w]+匹配所有单词字符(字母、数字和“_”)
    • |捕获的结果中不包含之前的空格([\s]*超出括号范围)
  2. 给出一个否定字符列表,其中你想要你的正则表达式停止:
    .*(REQ_[^|]+)\|
  3. 使用惰性匹配在第一次可能的情况下停止: .*(REQ_.+?)\|

答案4

如果REQ_后面总是跟着单词字符,你可以简单地使用REQ_w+,或者如果你不想匹配ABCREQ_123,使用词边界\bREQ_\w+

查看实际效果

相关内容