我有这个RegEx字符串..。
String regex = ^(/|\\){2}(projects|depot|perforce_[0-9a-zA-Z]+)(\\1)q(uality|a)]+)(\\1)$
应该与此regex匹配的字符串测试用例:
对此正则表达式的解释:
这个正则表达式失败了,只有以下字符串//仓库/quality/的例外
java.util.regex.PatternSyntaxException: Unclosed group near index 64
^(/|\){2}(projects|depot|perforce_[0-9a-zA-Z]+)(\1)q(uality|a)(\1)$
^我的另一个问题是,我也希望在group1中允许垂直条形字符:
因此,下面的字符串也与以下字符串匹配:x_
我怎么能这么做?我不知道怎么摆脱它?
发布于 2016-06-08 08:43:41
String regex = "^(\\/|\\\\|\\|){2}(projects|depot|perforce_[0-9a-zA-Z]+)(\\1)q(uality|a)(\\1)$";这个Java regex字符串对您来说应该很好。如您所见,\\|将在Java \|中解析,这是垂直条的regex转义。
发布于 2016-06-08 07:37:06
你有错误的规则。你应该使用:
(\/\/|\\){1}(projects|depot|(perforce_[0-9a-z]+))(\\|\/)(quality|qa)(\\|\/)
这是用于java的:
String pattern = "(\\/\\/|\\\\){1}(projects|depot|(perforce_[0-9a-z]+))(\\\\|\\/)(quality|qa)(\\\\|\\/)";效果很好。
如果您想使用||depot|quality|(在regexp中是\|),那么您应该使用以下内容:
(\/\/|\\|\||\|\|){1}(projects|depot|(perforce_[0-9a-z]+))(\\|\/|\|)(quality|qa)(\\|\/|\|)如果你能更清楚地解释你想要什么,我就能更准确地帮助你。如果您只想匹配一个字符串,比如//depot/quality/,那么它工作得很好,但是如果您想解析大型文档,那么regexp就会有一点不同。
https://stackoverflow.com/questions/37695929
复制相似问题