gpt4 book ai didi

java - 使用正则表达式查找出现的情况(Java 引擎)

转载 作者:行者123 更新时间:2023-11-30 04:49:35 25 4
gpt4 key购买 nike

我想使用一些正则表达式来查找出现的情况。例如,用户将输入:

word1 code1 -10001 !

这意味着:搜索 word1 AND code1 AND -10001 AND NOT none

这些标准用于构建正则表达式。

我有这样的文本行:

1 - “我通常的 word12 包含 GCode10 -10001。记录结束”//这应该是 true 并返回“world12 包含 GCode10 -10001。”

2 - “这是另一行 word12 包含 GCode10 -10001 无 记录结束”//这应该是 false 并且不返回任何内容

我尝试过这个:

^(?=.*?word1)(?=.*?code1)(?=.*?-10001)((?!none).)*$

它适用于第 1 行,但它返回所有行

我也尝试过这个:

(\\w*word1\\w*).*(\\w*code1\\w*).*(\\w*-10001\\w*)(?!none)

但它只给了我“word12”,“GCode10”,但它错过了“-10001”,而且它匹配第二行!不应该。

我不是正则表达式方面的专家...

最佳答案

你就快到了,只是错误地使用了否定前瞻:

^(?=.*?word1)(?=.*?code1)(?=.*?-10001)(?!.*?none).*$

您还应该使用多行选项编译正则表达式,除非您将每一行视为单独的字符串。因此,如果 subjectString 是多行字符串,

List<String> matchList = new ArrayList<String>();
Pattern regex = Pattern.compile("^(?=.*?word1)(?=.*?code1)(?=.*?-10001)(?!.*?none).*$", Pattern.MULTILINE);
Matcher regexMatcher = regex.matcher(subjectString);
while (regexMatcher.find()) {
matchList.add(regexMatcher.group());
}

将为您提供满足您条件的所有行的列表。

如果您正在处理用户输入,您可能需要对用户提供给您的所有字符串调用 Pattern.quote(),这样任何正则表达式元字符都会被转义。

关于java - 使用正则表达式查找出现的情况(Java 引擎),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10143028/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com