Regex 特定正则表达式的帮助:需要在单个字符串中匹配多种格式的多个实例
我为这个糟糕的标题道歉……很难用一句话概括整个情况 首先,我要说,我这么问是因为我不是正则表达式专家。我在这里和那里都使用过它,但我只是想出了一个正确的方法来满足以下要求 我试图编写的正则表达式用于XML模式中的输入验证,也用于Javascript中的其他地方 支持两种不同的可能格式。有一个文字字符串(必须用引号括起来)和一个十六进制值字符串(必须用大括号括起来) 一些测试用例:Regex 特定正则表达式的帮助:需要在单个字符串中匹配多种格式的多个实例,regex,Regex,我为这个糟糕的标题道歉……很难用一句话概括整个情况 首先,我要说,我这么问是因为我不是正则表达式专家。我在这里和那里都使用过它,但我只是想出了一个正确的方法来满足以下要求 我试图编写的正则表达式用于XML模式中的输入验证,也用于Javascript中的其他地方 支持两种不同的可能格式。有一个文字字符串(必须用引号括起来)和一个十六进制值字符串(必须用大括号括起来) 一些测试用例: “这是一个文本字符串”可能与 (?:(?:"[^,]+?"|\{(?:[0-9]|[a-f]|[A-F]| )+?\
“这是一个文本字符串”
可能与
(?:(?:"[^,]+?"|\{(?:[0-9]|[a-f]|[A-F]| )+?\}),)*(?:(?:"[^,]+?"|\{(?:[0-9]|[a-f]|[A-F]| )+?\}))
也许是类似于
(?:(?:"[^,]+?"|\{(?:[0-9]|[a-f]|[A-F]| )+?\}),)*(?:(?:"[^,]+?"|\{(?:[0-9]|[a-f]|[A-F]| )+?\}))
根据regex的说法,XSD中使用的语言不如Java中使用的语言表达能力强,但对于您的任务来说表达能力足够了
现在进行构造,使用您自己的正则表达式。将点替换为否定字符类[^,]
,以匹配除逗号以外的所有字符,并(为了更清晰)将十六进制字符类合并为一个。您将获得以下正则表达式:
"[^,]+"|\{[0-9a-fA-F ]+\}
如果我们将此正则表达式命名为
(用于“单个字符串”),则附加功能将由匹配任意数量的,
的正则表达式验证,后跟单个
:
根据regex的说法,XSD中使用的语言不如Java中使用的语言表达能力强,但对于您的任务来说表达能力足够了
现在进行构造,使用您自己的正则表达式。将点替换为否定字符类[^,]
,以匹配除逗号以外的所有字符,并(为了更清晰)将十六进制字符类合并为一个。您将获得以下正则表达式:
"[^,]+"|\{[0-9a-fA-F ]+\}
如果我们将此正则表达式命名为
(用于“单个字符串”),则附加功能将由匹配任意数量的,
的正则表达式验证,后跟单个
:
这是一个有效的Java解决方案,但是XSD的正则表达式语言不允许某些语法元素(不情愿的量词和非捕获组)。请看Upvoted,感谢您的努力,也感谢有效的解决方案(无论如何,我相信Christian会这么做)。谢谢你的帮助!这是一个有效的Java解决方案,但是XSD的正则表达式语言不允许某些语法元素(不情愿的量词和非捕获组)。请看Upvoted,感谢您的努力,也感谢有效的解决方案(无论如何,我相信Christian会这么做)。谢谢你的帮助!谢谢你,克里斯蒂安,这正是我想要的。解释它似乎比我意识到的更容易……我想这就是懂一门语言和努力学习以使它正确的区别。当你这样做的时候,它看起来容易多了,而且解释也很有道理。非常感谢。谢谢你,克里斯蒂安,这正是我想要的。解释它似乎比我意识到的更容易……我想这就是懂一门语言和努力学习以使它正确的区别。当你这样做的时候,它看起来容易多了,而且解释也很有道理。非常感谢。