Java 如何在regexp中匹配一组字符串

Java 如何在regexp中匹配一组字符串,java,regex,Java,Regex,如何在regexp中有效地组合ch..+和ch..-,而不必单独扫描? 我们是否在模式中使用matcher 我的输出代码如下所示: ch01+ ch01- ch02+ ch02- ... 如何在regexp中有效地组合ch..+和ch..-,而不必单独扫描 使用: 我们在模式中使用matcher吗 取决于您如何使用regexp和模式。为了得到一个具体的答案,你必须展示一些实际的代码,或者问一个更具体的问题 N.B.如果要将ch后面的两个字符限制为0-9,可以使用\d,这是一个: 如何在re

如何在regexp中有效地组合
ch..+
ch..-
,而不必单独扫描? 我们是否在模式中使用
matcher

我的输出代码如下所示:

ch01+
ch01-
ch02+
ch02-
...
如何在regexp中有效地组合
ch..+
ch..-
,而不必单独扫描

使用:


我们在模式中使用matcher吗

取决于您如何使用regexp和模式。为了得到一个具体的答案,你必须展示一些实际的代码,或者问一个更具体的问题


N.B.如果要将
ch
后面的两个字符限制为
0-9
,可以使用
\d
,这是一个:

如何在regexp中有效地组合
ch..+
ch..-
,而不必单独扫描

使用:


我们在模式中使用matcher吗

取决于您如何使用regexp和模式。为了得到一个具体的答案,你必须展示一些实际的代码,或者问一个更具体的问题


N.B.如果要将
ch
后面的两个字符限制为
0-9
,可以使用
\d
,这是一个:

您可以使用只包含“+”和“-”这样的“
[+-]

Pattern p=Pattern.compile(“ch..[+-]);
匹配器m=p.Matcher(“ch01+”);
if(m.find()){
//找到了。。。
您可以使用只包含“+”和“-”这样“
[+-]

Pattern p=Pattern.compile(“ch..[+-]);
匹配器m=p.Matcher(“ch01+”);
if(m.find()){
//找到了。。。

这将匹配“ch\d{2}+”或“-”。要仅应用于相关部分,您需要分组替换,即
ch\d{2}(?:++-)
-但由于这些是单个字符,因此只使用字符类(如Maeric的答案)要简单得多。此外,使用非捕获组
(?:…)可能更有效
比捕获组
(…)
,因为引擎不需要存储匹配的字符。没问题。(为虚拟编辑道歉,但愚蠢的软件不允许我删除临时下一票。)@Maeric是可能的,但没有基准测试,这纯粹是猜测。@Peter不需要道歉,我看到了你的编辑评论
:)
thww1,因为你在使用Java,你需要避开字符串中的所有反斜杠,这样它们才能进入正则表达式。也就是说,
ch\d\d[-+]
regex需要是
ch\\d\\d[-+]
在Java字符串中。这将匹配“ch\d{2}+”或“-”。要仅应用于相关部分,您需要对交替进行分组,即
ch\d{2}(?:++-)
——但由于这些是单个字符,因此只使用字符类(如Maeric的答案)要简单得多。此外,使用非捕获组
(?:…)可能更有效
比捕获组
(…)
,因为引擎不需要存储匹配的字符。没问题。(为虚拟编辑道歉,但愚蠢的软件不允许我删除临时下一票。)@Maeric是可能的,但没有基准测试,这纯粹是猜测。@Peter不需要道歉,我看到了你的编辑评论
:)
thww1,因为你在使用Java,你需要避开字符串中的所有反斜杠,这样它们才能进入正则表达式。也就是说,
ch\d\d[-+]
regex需要是
ch\\d\\d[-+]
在Java字符串中。虽然“-”字符不需要在这里转义(当它是最后一个字符时,它不能是一个范围),但最好转义它,以防万一,如果有可能添加更多字符。@Peter Boughton:不,只要把它放在第一位。:)您可以编写
[-+]
不要担心在加号之后或之前向类中添加更多字符。你只需要担心在减号之前添加字符。(事实上,是的,我同意这一点。最好教人们如何(至少)添加字符。)char类的工作方式不是不必要地转义,而是增加噪音。可能在某些情况下,我仍然希望转义
-
,但这不是其中之一。虽然“-”字符不需要在此处转义(当它是最后一个字符时,它不能是一个范围),如果有可能会添加更多字符,最好避开它。@Peter Boughton:Naw,只需将其放在第一位。:)您可以编写
[-+]
,而不必担心在加号之后或之前向类中添加更多字符。您只需担心在减号之前添加字符即可(事实上,是的,我同意这一点。教人们(至少)char类是如何工作的,比不必要地逃避事情、添加噪音要好。在某些情况下,我可能仍然希望
-
逃避,但这不是其中之一。
ch..(\+|-)
ch\d{2}(\+|-)