在小于号之前匹配任何数字,单词字符或空格46次或更多次

时间:2013-01-14 12:54:03

标签: regex notepad++

目的

我希望在<符号之前匹配任何数字,字符或空格 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,}?与元素的内部部分不匹配。

我期待你的回答!

3 个答案:

答案 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,})</