Regex 如果还有其他失败的正则表达式
我想写一个正则表达式来确定单词的长度是否为3个字符,但前面的Regex 如果还有其他失败的正则表达式,regex,Regex,我想写一个正则表达式来确定单词的长度是否为3个字符,但前面的m是可选的。在这种情况下,m后跟至少3个字符是必需的 基本上我想要匹配 Abc或m_Abc和ab或m_ac (^(m_))?([a-zA-Z0-9_]{3,})|(^[a-zA-Z0-9_]{3,}$) 我尝试了一个if循环,但它也与文本ma匹配。 你能帮我看看我这里缺什么吗 也许我的正则表达式写错了。 我想要像这样的东西 如果(找到) “后跟3个字符(必需)” 其他的 “查看总字符数是否为3” 谢谢。您想让您的3个字符的单词中有下划
m
是可选的。在这种情况下,m
后跟至少3个字符是必需的
基本上我想要匹配
Abc
或m_Abc
和ab
或m_ac
(^(m_))?([a-zA-Z0-9_]{3,})|(^[a-zA-Z0-9_]{3,}$)
我尝试了一个if循环,但它也与文本ma
匹配。
你能帮我看看我这里缺什么吗
也许我的正则表达式写错了。
我想要像这样的东西
如果(找到)
“后跟3个字符(必需)”
其他的
“查看总字符数是否为3”
谢谢。您想让您的3个字符的单词中有下划线吗?因为如果没有,那么您可以将
[a-zA-Z0-9.
更改为[a-zA-Z0-9]
,在这种情况下,它不应该与m_a
匹配。除非您想匹配数字,否则可以将其进一步简化为[a-zA-z]
您可以使用此正则表达式,该正则表达式在开始时需要m
,或者禁止使用它(通过负向前看):
看
如果负像头不是您可以使用的功能,那么您可以使用这个更复杂的正则表达式,它为前两个字符提供了不同的选项:
^(m_\w{3,}|m[A-Za-z0-9]\w+|[A-Za-ln-z0-9]\w{2,})$
请参见主要错误是,
^
线锚位于可选括号表达式内。您希望无条件地以行开头,后跟可选的m?
您可以显著简化其余部分。需要三个字符的表达式捕获三个或更多字符;无论您是否在输入的末尾,正则表达式都将在该点成功
^(m_)?[a-zA-Z0-9_]{3}
character类中的下划线似乎有点可疑。你真的想让一个“单词”包含下划线吗?然后,
m_ac
也将匹配,因为它至少有三个字符长,并且由集合中的字符组成,即使您说它是明确禁止的。由于您将^
设置为可选,所以出现了问题。您使用的是哪种语言或正则表达式解析器?您提供的示例似乎是ERE,但如果您的解析器支持PCRE,您将可以使用更多选项……感谢您的回复。是的,我的要求也是匹配。它用于检测代码是否按照标准编写。像“Test_Val”这样的变量是validAh,好的。在这种情况下,为什么m_a
不是有效的变量名?如果首先找到m_,那么它后面应该跟3个字符。如果没有找到,那么正如你说的是的,我们可以允许像a_b这样的东西。非常感谢它的工作。但是对不起,我还有更多的问题要问。我认为如果我知道基本知识,我可以扩展,但我不能扩展。是否也可以添加g_u。这就像m或g被允许用g
扩展:^(m|g|(?!m|)(?!g|))\w{3,}$
或更短的:^([mg]|(?![mg]|))\w{3,}$
^(m_)?[a-zA-Z0-9_]{3}