我希望将我的 re.findall(regex) 转换为 java。 我知道如何使用匹配和模式,但是当我要查找多个正则表达式模式时,我将不得不多次编译它。例如;
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 次,然后再次将其与文本匹配,然后重新提取这些匹配项。我想知道是否有更短的方法?
最佳答案
我认为你已经在问题中回答了你的问题 - 除非我遗漏了一些东西。
Pattern p = Pattern.compile("your regex");
然后就可以使用Pattern的方法了如所须。 您可以编译任意数量的模式,并使用它们生成尽可能多的匹配器。
例如:
Matcher m = p.matcher("some input");
从那里您可以使用 Matcher完成所有数据提取、逐步执行匹配、替换等...
至于有多个模式,您将需要编译每个模式,除非您可以将它们组合成一个。也许通过使用“替代”运算符“|”或者具有更通用(或更具体)的模式。这就产生了一个问题,为什么你要正则表达式一些通用的东西只是为了在另一个步骤中更多地限制它?
也许你可以做这样的事情并且只拥有一个?
Pattern p = Pattern.compile("-(\d+.\d+)");
关于java - re.findall 从 python 到 Java 匹配、模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56731955/