我正在尝试匹配以下字符串:
this\test_
_thistes\t
_t\histest
换句话说,允许的字符串只有一个反斜杠,分割2个子字符串,可以包含数字,字母和_字符。
我尝试了以下正则表达式,在http://regexhero.net/tester/上测试它:
^[a-zA-Z_][\\\]?[a-zA-Z0-9_]+$
不幸的是,它还识别以下不允许的字符串:
this\\
_\
_\w\s\x
请帮忙吗?
答案 0 :(得分:1)
不要将\
作为可选项。以下正则表达式不允许两个或更多\
反斜杠,并断言在\
符号之前和之后必须至少存在一个单词字符。
@"^\w+\\\w+$"
OR
@"^[A-Za-z0-9_]+\\[A-Za-z0-9_]+$"
答案 1 :(得分:0)
如果我理解你想要的一切,我相信这应该有用。
^([a-zA-Z0-9_]+\\[a-zA-Z0-9_]+)
答案 2 :(得分:0)
修复正则表达式的最佳方法如下:
^[a-zA-Z0-9_]+\\[a-zA-Z0-9_]+$
这分解为:
NODE EXPLANATION
--------------------------------------------------------------------------------
^ the beginning of the string
--------------------------------------------------------------------------------
[a-zA-Z0-9_]+ any character of: 'a' to 'z', 'A' to 'Z',
'0' to '9', '_' (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
\\ '\'
--------------------------------------------------------------------------------
[a-zA-Z0-9_]+ any character of: 'a' to 'z', 'A' to 'Z',
'0' to '9', '_' (1 or more times (matching
the most amount possible))
--------------------------------------------------------------------------------
$ before an optional \n, and the end of the
string
由http://rick.measham.id.au/paste/explain.pl提供的解释
正如您所看到的,我们在反斜杠之前和之后具有相同的模式(因为您指出它们应该是字母,数字和下划线),+修饰符意味着至少有一个。然后在中间只有强制反斜杠。
由于目前还不清楚你是否说过"字母"你的意思是基本的字母表,或者如果你的意思是任何字母(最明显的重音字符,还有任何其他字母等),那么你可能希望通过使用\w
之类的东西来扩展你的字符集作为Avinash Raj提示。有关"字符"的更多信息,请参阅http://msdn.microsoft.com/en-us/library/20bw873z(v=vs.110).aspx#WordCharacter。覆盖。
答案 3 :(得分:0)
你的正则表达式可能意味着两件事,这取决于你是将它声明为原始字符串还是普通字符串。
使用:
"^[a-zA-Z_][\\\]?[a-zA-Z0-9_]+$"
不符合您的任何测试示例,因为它将按顺序匹配:
^
字符串的开头,[a-zA-Z_]
1个字母字符或下划线,[\\\]?
1个可选的反斜杠,[a-zA-Z0-9_]+
至少1个字母数字和/或下划线字符,$
字符串结尾如果你将它用作原始字符串(这是regexhero如何解释它并在字符串开始之前用@
符号表示)是:
@"^[a-zA-Z_][\\\]?[a-zA-Z0-9_]+$"
^
字符串的开头,[a-zA-Z_]
1个字母字符或下划线,[\\\]?[a-zA-Z0-9_]+
有一个或多个角色;反斜杠,]
,?
,字母数字和下划线,$
字符串结束。所以你真正需要的是:
"^[a-zA-Z0-9_]+\\\\[a-zA-Z0-9_]+$"
(两对反斜杠变为两个字面反斜杠,由正则表达式引擎将其解释为转义反斜杠;因此为1字面反斜杠)
或者
@"^[a-zA-Z0-9_]+\\[a-zA-Z0-9_]+$"
(没有执行反斜杠替换,因此正则表达式引擎直接解释转义的反斜杠)
请注意,我在第一个字符类中添加了数字,以允许它匹配您请求的数字,并添加+
量词,以允许它在反斜杠之前匹配多个字符。