Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.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 - Fatal编程技术网

Regex查找包含两个字符串之一但不包含特定文本的起始模式

Regex查找包含两个字符串之一但不包含特定文本的起始模式,regex,Regex,我想使用正则表达式来查找包含特定模式的行 模式应为以2个字符(a-zA-Z0-9)开头的字符串,后跟破折号,然后是“FAL”或“SAL”,且不包括术语“OJT” 我只是想确定我有正确的答案,还是我遗漏了一些东西,因为它看起来不像预期的那样有效 ^[a-zA-z0-9]{1,2}(?=.*?\-SAL|-FAL\b)((?!OJT).)*$ 你可以用 ^[a-zA-Z0-9]{1,2}(?!.*OJT).*?(?:-SAL|-FAL)\b.* 见 详细信息 ^-字符串的开头 [a-zA-Z0

我想使用正则表达式来查找包含特定模式的行

模式应为以2个字符(a-zA-Z0-9)开头的字符串,后跟破折号,然后是“FAL”或“SAL”,且不包括术语“OJT”

我只是想确定我有正确的答案,还是我遗漏了一些东西,因为它看起来不像预期的那样有效

^[a-zA-z0-9]{1,2}(?=.*?\-SAL|-FAL\b)((?!OJT).)*$
你可以用

^[a-zA-Z0-9]{1,2}(?!.*OJT).*?(?:-SAL|-FAL)\b.*

详细信息

  • ^
    -字符串的开头
  • [a-zA-Z0-9]{1,2}
    -一个或两个字母数字字符
  • (?!*OJT)
    -任何0+个字符,尽可能少,后跟
    OJT
    char序列不应立即出现在当前位置的右侧
  • *?
    -除换行符以外的任何0+字符尽可能少
  • (?:-SAL |-FAL)\b
    -
    -SAL
    -FAL
    后面不跟字符
  • *
    -字符串的其余部分
见:


您的正则表达式似乎工作正常,并且您不需要使用调和贪婪令牌(非常昂贵,因此仅在没有其他方法时使用),一个简单的负面外观头应该足够好。也许
^[a-zA-Z0-9]{1,2}(?。*OJT)。*?(?:-SAL |-FAL)\b.*
?谢谢,如果-FAL或-SAL是不区分大小写的,那么在结尾使用/i是否足够好?@Alan这取决于语言是什么。
/^[a-zA-Z0-9]{1,2}(?。*OJT.*?(?:-SAL |-FAL)\b.*/i
(?)i^[a-zA-Z0-9]{1,2}(?。*OJT.*?(?:-SAL |-FAL)\b、 *
将在96%的情况下完成这项工作。好的,谢谢目前我在excel中使用VB,所以我看到有一个选项用于
。IgnoreCase=False
所以我假设我只是将它设置为
True
@Alan
模式。IgnoreCase
必须设置为
True
才能忽略大小写。@Alan我不知道你的正则表达式知识水平,因此,我只能建议大家在,通读,(通过许多其他链接到伟大的在线资源)和所谓的社区上完成所有课程。还有,值得一看。