从python到Java的re.findall匹配,模式

2024-04-19 17:27:12 发布

您现在位置:Python中文网/ 问答频道 /正文

我想把我的re.findall(regex)转换成java。 我知道如何使用匹配和模式,但当我要找到多个regex模式时,我将不得不多次编译它。例如:

text = "-3-testing"
text_temp = re.findall("(.?\d+.)",text) # here one time
if len(text_temp) != 0:
    if "-" in text_temp[0]:
        text_temp = re.findall("(\d+.\d+)", text) #here second time

上面是我的python代码,但是如果我想转换成java,那就意味着我需要编译它2次,然后用文本再次匹配它,然后重新提取那些匹配。我想知道是否有一个更简短的方法做这件事


Tags: textinrelenifheretime模式
1条回答
网友
1楼 · 发布于 2024-04-19 17:27:12

我想你已经回答了你的问题,除非我遗漏了什么


Pattern p = Pattern.compile("your regex");

然后您可以根据需要使用Pattern的方法。 您可以编译任意多的模式,并使用它们生成尽可能多的匹配器

例如:

Matcher m = p.matcher("some input");

在那里,您可以使用Matcher来提取所有数据,逐步进行匹配、替换等等

至于有多个模式,你需要编译每个模式,除非你能把它们组合成一个。也许通过使用“alternatives”操作符“|”,或者使用更通用(或更具体)的模式。这就产生了一个问题,为什么regex只是为了在另一个步骤中对它进行更多的约束

也许你可以做这样的事,只吃一个

Pattern p = Pattern.compile("-(\d+.\d+)");

相关问题 更多 >