Java 如何在regexp中匹配一组字符串
如何在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
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}(\+|-)