3

客观的

我想在符号前匹配任何数字、单词字符或空格46 次或更多次<

一个注意事项是,在将其插入 C# 代码之前,我正在尝试在 Notepad++ 中使用此 RegEx。

数据

<Elem1>123 ABC Street</Elem1> // should NOT match
<Elem1>123637 ABC Street Suite 1, Kalamzoo, FL 15264-8574</Elem1>

正则表达式

我目前有以下正则表达式:

^.*<Elem1>[\d\w\s]{46,}?

而且我无法弄清楚为什么这[\d\w\s]{46,}?与元素的内部部分不匹配。

我期待着您的回答!

4

3 回答 3

8

它不匹配,因为输入包含逗号和连字符,它们不属于您包含的三个字符类中的任何一个。

这将匹配:

^.*<Elem1>[\d\w\s,-]{46,}?

<Elem1>此外,如果正则表达式在多行模式下运行,则仅包含输入锚的开头然后继续说“哦,忽略您在“之前找到的任何字符”才有意义。否则,只需

<Elem1>[\d\w\s,-]{46,}?
于 2013-01-14T12:57:44.447 回答
1

使用这个正则表达式<Elem1>[\w\s]{46,}

于 2013-01-14T12:56:36.383 回答
1

反斜杠组仅包含数字、单词字符和空格,因此不包括逗号和破折号(如您的示例)。此外,如果您真的想匹配标签之间的所有内容?,您应该删除它以使其变得贪婪,并且也可以添加结束标签。然后,您可以使用捕获组来获取内部内容:(示例

^.*<Elem1>([\d\w\s,-]{46,})</

或者,如果您想确保也捕获其他字符,您可以只接受<标签内符号以外的任何字符:

^.*<Elem1>([^<]{46,})</
于 2013-01-14T13:03:30.800 回答