正则表达式模式力与条件匹配,而不与其他条件匹配

我正试图强迫符合以下条件:

  • 如果以1,2,3个数字结尾+ 1个空格+ 1个字母。
  • 如果模式在字符串中间匹配,请忽略它。

输入:

ME001000 RV 2 B

ME001000 G 10 B

ME001000 RE 321 B

MP260000 EQTE 1 A

EL008002P TR 06 A 1 不匹配,因为它位于字符串的中间

正则表达式模式:([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1})+(?:[0-9]{2} [A-Z]{1}\s)

  1. 部分:([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1}):正确匹配,但也与“ 06 A”(最后一个字符串的中间)匹配

  2. 部分:+(?:[0-9]{2} [A-Z]{1}\s):为了强制不匹配

我该怎么做才能强制不匹配?

hyjdbsc 回答:正则表达式模式力与条件匹配,而不与其他条件匹配

您要使用的正则表达式为:

\d{1,3} [A-Z]$

See Regex Demo

  1. \d{1,3}匹配1到3位数字
  2. 匹配一个空格。
  3. [A-Z]匹配一个大写字母。
  4. $匹配字符串的结尾。

您最需要的是$ anchor ,以确保您要查找的内容位于字符串的末尾。

此正则表达式演示使用的是JavaScript规范(您未指定使用的语言),并使用了标志gmg标志用于查找多个匹配项,而m标志则用于$锚点,以匹配行尾和字符串尾。

正如ggorlen所指出的,您可能需要考虑进行一些修改:

\b\d{1,3} [A-Z]$

以上内容可确保您要匹配的模式的第一位数字从单词边界开始(也就是说,其后跟非单词字符或字符串的开头)。

,

尝试一下:

\d{1,3} [A-Za-z]$
  • \d =任何数字
  • {1,3} =重复1到3次
  • =文字空间
  • [A-Za-z] =任何大写或小写字母
  • $ =断言字符串的结尾
本文链接:https://www.f2er.com/2763253.html

大家都在问