我希望在<
符号之前匹配任何数字,字符或空格 46次或更多次。
一个注意事项是我在将它插入C#代码之前尝试在Notepad ++中使用此RegEx。
<Elem1>123 ABC Street</Elem1> // should NOT match
<Elem1>123637 ABC Street Suite 1, Kalamzoo, FL 15264-8574</Elem1>
我目前有以下RegEx:
^.*<Elem1>[\d\w\s]{46,}?
我无法弄清楚为什么这个[\d\w\s]{46,}?
与元素的内部部分不匹配。
我期待你的回答!
答案 0 :(得分:7)
它不匹配,因为输入包含逗号和连字符,它们不是您包含的三个字符类中的任何一个。
这将匹配:
^.*<Elem1>[\d\w\s,-]{46,}?
此外,只有包含输入锚的开头才有意义,然后继续说“哦,如果正则表达式在多行模式下运行,则忽略在<Elem1>
之前找到的任何字符”。否则,只需
<Elem1>[\d\w\s,-]{46,}?
答案 1 :(得分:1)
使用此正则表达式<Elem1>[\w\s]{46,}
答案 2 :(得分:1)
反斜杠组仅包含数字,单词字符和空格,因此不包括逗号和破折号(如示例所示)。另外,如果你真的想要匹配标签之间的所有,你应该删除?
以使其变得贪婪,并且也可以将结束标签添加到它。然后,您可以使用捕获组来获取内部内容:(Example)
^.*<Elem1>([\d\w\s,-]{46,})</
或者,如果您想确保捕获其他字符,您可以接受标记内的<
符号以外的任何字符:
^.*<Elem1>([^<]{46,})</