正确的RegEx语法

时间:2016-04-25 12:37:24

标签: regex pattern-matching match regex-negation nsregularexpression

我想匹配这个字符串:

<Array value="Default">
<Element value="5"/>

我尝试过Negative Lookahead:

^((?!^\<Array value\=\"[a-zA-ZäöüßÄÖÜ]+\"\>).)
^((?!^\<Element value\=\"[0-9]+\"\/\>).)*$

例如,如果我删除了令牌'&gt;'然后比赛将是真的。但在每种情况下都是错误的。

如果我尝试这场比赛

^((?!^\<Array value\=\"[a-zA-ZäöüßÄÖÜ]+\"\>).)*$

到此String(我删除了令牌'&gt;')

<Array value="Default"

然后出来是真的。所以我认为失败的是这个正则表达式的两行

^((?!^\<Array value\=\"[a-zA-ZäöüßÄÖÜ]+\"\>).)
^((?!^\<Element value\=\"[0-9]+\"\/\>).)*$

合并为假。

有没有人解决我的问题?

抱歉我的英文不好!

2 个答案:

答案 0 :(得分:0)

编辑我认为你不需要Negative Lookahead来匹配整个字符串。你可以尝试:

<Array\s+value="[^"]+">\s+<Element\s+value="[^"]+"\/>

REGEX 101 DEMO

答案 1 :(得分:0)

您可以使用此模式将两个值作为结果匹配中的组。请注意,您可能必须设置正则表达式实现的多行标记。

^\s*<\s*Array\s+value\s*=\s*"(.+?)"\s*>\s*<\s*Element\s+value\s*=\s*"(.+?)"\s*/?\s*>\s*$