java - re.findall 从 python 到 Java 匹配、模式

标签 java python

我希望将我的 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/

相关文章:

java - 在 jdk-13 和 jdk-15 中 UseCompressedOops UseCompressedClassPointers

python - 如何为 python igraph 列表属性的各个元素赋值?

python - 值错误 : need more than 1 value to unpack

python - plotly :如何为子 plotly 标题分配变量?

java - Kotlin + Spring Boot请求编码

java - Server Socket写的时候,是不是等到Client Socket读了?

java - Android Socket 连接比特币节点

java - 使用 SQL 创建和构建复杂的座位结构?

python - 通过 pyAMF channel 发送的 kwargs

python - 有没有一种简单的方法来 pickle 一个 python 函数(或者序列化它的代码)?