Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如果字符串只匹配Java中的一个组,则使用正则表达式匹配该字符串_Java_Regex_Regex Negation_Regex Group - Fatal编程技术网

如果字符串只匹配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]+)$