正则表达式模式强制匹配条件而不是另一个条件
Regex pattern force match with condition and not for another condition
我试图强制匹配这些条件:
- 如果以 1,2,3 个数字 + 1 space + 1 个字母结尾。
- 如果模式在字符串中间匹配,则忽略它。
输入:
ME001000 RV 2 B <- 需要匹配
ME001000 G 10 B <- 需要匹配
ME001000 RE 321 B <- 需要匹配
MP260000 EQTE 1 A <- 需要匹配
EL008002P TR 06 A 1 <- 需要 NOT 匹配,因为在字符串
的中间
正则表达式模式:([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)
部分:([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1})
:匹配正确但也匹配“06 A”(最后一个字符串的中间)
部分:+(?:[0-9]{2} [A-Z]{1}\s)
:为了强制非匹配
我需要做什么来强制不匹配?
试试这个:
\d{1,3} [A-Za-z]$
\d
= 任意数字
{1,3}
= 重复匹配 1 到 3 次
</code> = 文字 space </li>
<li><code>[A-Za-z]
= 任何大写或小写字母
$
= 断言字符串结束
您要使用的正则表达式是:
\d{1,3} [A-Z]$
\d{1,3}
匹配 1 到 3 位数字
</code> 匹配单个 space.</li>
<li><code>[A-Z]
匹配大写字母。
$
匹配字符串结尾。
您最需要的是 $
锚点 以确保您要查找的内容位于字符串的末尾。
正则表达式演示使用 JavaScript 规范(您没有指定您使用的语言)并使用标志 g
和 m
。 g
标志用于查找多个匹配项,m
标志用于 $
锚点匹配行尾和字符串尾。
正如 ggorlen 所指出的,您可能需要考虑稍作修改:
\b\d{1,3} [A-Z]$
以上确保您尝试匹配的模式的第一个数字从单词边界开始(即,它前面是非单词字符或字符串开头)。
我试图强制匹配这些条件:
- 如果以 1,2,3 个数字 + 1 space + 1 个字母结尾。
- 如果模式在字符串中间匹配,则忽略它。
输入:
ME001000 RV 2 B <- 需要匹配
ME001000 G 10 B <- 需要匹配
ME001000 RE 321 B <- 需要匹配
MP260000 EQTE 1 A <- 需要匹配
EL008002P TR 06 A 1 <- 需要 NOT 匹配,因为在字符串
的中间正则表达式模式:([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)
部分:
([0-9]{1} [A-Z]{1}|[0-9]{2} [A-Z]{1}|[0-9]{3} [A-Z]{1})
:匹配正确但也匹配“06 A”(最后一个字符串的中间)部分:
+(?:[0-9]{2} [A-Z]{1}\s)
:为了强制非匹配
我需要做什么来强制不匹配?
试试这个:
\d{1,3} [A-Za-z]$
\d
= 任意数字{1,3}
= 重复匹配 1 到 3 次</code> = 文字 space </li> <li><code>[A-Za-z]
= 任何大写或小写字母$
= 断言字符串结束
您要使用的正则表达式是:
\d{1,3} [A-Z]$
\d{1,3}
匹配 1 到 3 位数字</code> 匹配单个 space.</li> <li><code>[A-Z]
匹配大写字母。$
匹配字符串结尾。
您最需要的是 $
锚点 以确保您要查找的内容位于字符串的末尾。
正则表达式演示使用 JavaScript 规范(您没有指定您使用的语言)并使用标志 g
和 m
。 g
标志用于查找多个匹配项,m
标志用于 $
锚点匹配行尾和字符串尾。
正如 ggorlen 所指出的,您可能需要考虑稍作修改:
\b\d{1,3} [A-Z]$
以上确保您尝试匹配的模式的第一个数字从单词边界开始(即,它前面是非单词字符或字符串开头)。