Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 正则表达式模式强制与条件匹配,而不是与其他条件匹配_Regex_String_Match_Regex Negation - Fatal编程技术网

Regex 正则表达式模式强制与条件匹配,而不是与其他条件匹配

Regex 正则表达式模式强制与条件匹配,而不是与其他条件匹配,regex,string,match,regex-negation,Regex,String,Match,Regex Negation,我试图强制满足以下条件: 如果以1,2,3个数字+1个空格+1个字母结尾 如果模式在字符串中间匹配,忽略它。 投入: ME001000 RV2 B尝试以下方法: \d{1,3} [A-Za-z]$ \d=任意数字 {1,3}=重复匹配1到3次 =文本空间 [A-Za-z]=任何大写或小写字母 $=断言字符串结尾 您要使用的正则表达式是: \d{1,3} [A-Z]$ \d{1,3}从1到3位匹配 匹配单个空格 [A-Z]匹配大写字母 $匹配字符串的结尾 您最需要的是$锚定,以确保您要

我试图强制满足以下条件:

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

ME001000 RV2 B尝试以下方法:

\d{1,3} [A-Za-z]$
  • \d
    =任意数字
  • {1,3}
    =重复匹配1到3次
  • =文本空间
  • [A-Za-z]
    =任何大写或小写字母
  • $
    =断言字符串结尾

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

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

  • \d{1,3}
    从1到3位匹配
  • 匹配单个空格
  • [A-Z]
    匹配大写字母
  • $
    匹配字符串的结尾
  • 您最需要的是
    $
    锚定,以确保您要查找的内容位于字符串的末尾

    regex演示使用的是JavaScript规范(您没有指定您使用的语言),并使用标志
    g
    m
    g
    标志用于查找多个匹配项,
    m
    标志用于
    $
    锚定匹配行尾和字符串尾

    正如GoRLLN指出的,你可能需要考虑一个小小的修改:

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

    上述方法确保您尝试匹配的模式的第一个数字从单词边界开始(即,它前面有一个非单词字符或字符串的开头)。

    请记住,这将匹配
    234 a
    中的
    foobar234 a
    。如果你们两个加上(我认为必要的)单词边界意味着所有贴出的答案都是一样的。。。¯\_(ツ)_/“@ggorlen这是一个公平的观点,但从问题来看,这是否是一个问题并不完全清楚,但示例表明它可能是(或者该模式可能需要在前面加一个空格)。我在回答中添加了一个附录。