好的,首先我与正则表达式关系紧张。我通常可以设法抓住或验证我需要的数据。但现在真的感觉我已经打到正则表达墙了。
我已经将我需要验证的用户数据串连接在一起
它们看起来像:john|45|some|data|00111{more|data
{more|data
- 部分应该能够发生0次或更多次,但如果我只使用(regex)*
。然后,如果一个部分失败,则该字符串仍然部分匹配。我想让它在这种情况下失败。
为了简化我的案例:我希望foo
,foobar
,foobarbar
进行验证。但是foobarcar
和foobat
无法通过验证。
foo(?:bar)*
将匹配所有(最后2个仅部分)
...如果可能的话我想保持"不要捕捉"部分(?:)。
据我所知,解决方案可能在LookAround中,代码中的DontAllowPartialMatches参数,或者拆分字符串并单独验证部件......
非常感谢任何帮助。
答案 0 :(得分:0)
使用$
明确匹配字符串的结尾(或可能是行,取决于您的方言):
foo(?:bar)*$
这将匹配foo,foobar,foobarbar等,但不是foobarcar或foobat,如你所愿。
(它也会匹配barfoobar,所以如果这是一个问题,你可能也想使用^
来明确地匹配开头。^foo(?:bar)*$
)