输入:
“一个[HREF * = \” 测试\ “]”
我正在尝试匹配以下jQuery选择器中的标记名称:
Regex r = new Regex("^[A-z]+");
string tagName = r.Match("a[href*=\"test\"]").Value;
问题是它收集左括号而不是A到z:
tagName =“a [href”
如果未在表达式中指定括号,为什么会收集括号?
答案 0 :(得分:10)
这是因为这个
[A-z]
创建从ASCII“A”到ASCII“z”的字符范围。 Z和a之间有字母以外的字符,其中一个是[
字符。改为使用:
[A-Za-z]
要匹配A-Z
和范围a-z
的范围,而不是介于它们之间的字符。您可以查看ASCII table以查看具体内容,但摘要是字符(按其ASCII数字顺序排列)如下所示:
A, B, ..., Y, Z, [, \, ], ^, _, `, a, b, c, ..., z
答案 1 :(得分:-1)
你应该尝试像regexpal这样的工具来测试这样的东西。这是你的榜样:
http://regexpal.com/?flags=g®ex= ^%5BA-Z%5D%2B&安培;输入=α%5Bhref *%3D%5C%22test%5C%22%5D
对我来说奇怪的是小写" z" - 由于某种原因,这是允许支架通过。
试试这个:
^[^\[]+
http://regexpal.com/?flags=g®ex= ^%5B ^%5C%5B%5D%2B&安培;输入=α%5Bhref *%3D%5C%22test%5C%22%5D