Regex查找包含两个字符串之一但不包含特定文本的起始模式
我想使用正则表达式来查找包含特定模式的行 模式应为以2个字符(a-zA-Z0-9)开头的字符串,后跟破折号,然后是“FAL”或“SAL”,且不包括术语“OJT” 我只是想确定我有正确的答案,还是我遗漏了一些东西,因为它看起来不像预期的那样有效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
^[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}
-任何0+个字符,尽可能少,后跟(?!*OJT)
char序列不应立即出现在当前位置的右侧OJT
-除换行符以外的任何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我不知道你的正则表达式知识水平,因此,我只能建议大家在,通读,(通过许多其他链接到伟大的在线资源)和所谓的社区上完成所有课程。还有,值得一看。