如果字符串只匹配Java中的一个组,则使用正则表达式匹配该字符串
我想知道,是否有一个正则表达式可以帮助匹配 文本,仅当测试字符串仅属于其中一个测试组时 假设我有两个小组: 第一组:如果字符串只匹配Java中的一个组,则使用正则表达式匹配该字符串,java,regex,regex-negation,regex-group,Java,Regex,Regex Negation,Regex Group,我想知道,是否有一个正则表达式可以帮助匹配 文本,仅当测试字符串仅属于其中一个测试组时 假设我有两个小组: 第一组:[a-zA-Z] 第二组:[0-9] 那么是否有一个适用的正则表达式,只匹配以下字符串:abc, 或者只有这个:123 但是当有一个字符串表示两个组的组合时,将不匹配任何内容,例如:123abc2b 附言:我正在使用Java。交替是解决问题的关键。使用模式^(?:\d*|[a-zA-Z]*)$ 解释: ^-字符串的开头 (?:…)-非CAPTRUNG组 \d*-匹配零位或多位数字
[a-zA-Z]
第二组:[0-9]
那么是否有一个适用的正则表达式,只匹配以下字符串:abc
,
或者只有这个:123
但是当有一个字符串表示两个组的组合时,将不匹配任何内容,例如:123abc2b
附言:我正在使用Java。交替是解决问题的关键。使用模式
^(?:\d*|[a-zA-Z]*)$
解释:
^
-字符串的开头
(?:…)
-非CAPTRUNG组
\d*
-匹配零位或多位数字
|
-替换
[a-zA-Z]*
-匹配零个或多个字母(小写或大写)
$
-匹配字符串的结尾
根据您的描述,我认为您只需要
|
,它在正则表达式中的意思是“或”。匹配[a-zA-Z]
或[0-9]
,但不能同时匹配两者
e、 g
String#matches
并使用^…$
来划定您的字符串的边界
您能提供一个具体的使用示例吗?@MichałTurczyn您的答案很准确,因为Haim是正则表达式的新手,并且符合他的思维模式。通过添加+检查组一[a-zA-Z]的多个实例,或通过添加+检查组二[0-9]的多个实例。or由导致([a-zA-Z]+)|([0-9]+)的管道表示。它将在Java中工作。但是,这里的答案更完整。@HaimLvov请查看此页面以了解更多信息。
^(?:[a-zA-Z]+|[0-9]+)$