gpt4 book ai didi

java正则表达式从较大的字符串中排除特定的字符串

转载 作者:搜寻专家 更新时间:2023-10-31 19:50:56 25 4
gpt4 key购买 nike

一段时间以来,我一直在努力反对这个问题:我想捕获所有 [a-z]+[0-9]? 字符序列,不包括 sin|cos|tan 等字符串。因此,在完成我的正则表达式作业后,以下正则表达式应该可以工作:

(?:(?!(sin|cos|tan)))\b[a-z]+[0-9]?

如您所见,我正在使用负前瞻和交替 - 非捕获组右括号后的 \b 对于避免匹配 in 至关重要>sin 等。正则表达式是有道理的,事实上我已经尝试使用 RegexBuddy 和 Java 作为目标实现,并获得了想要的结果,但是使用 Java Matcher 和 Pattern 对象时它不起作用!有什么想法吗?

干杯

最佳答案

\b 位置错误。它将寻找一个没有 sin/cos/tan before 的单词边界。但是在其中任何一个 之后 的边界都会在结尾处有一个字母,因此它必须是单词结尾边界,如果下一个字符是 a-z,则不能。

此外,否定前瞻会(如果有效的话)排除像 cost 这样的字符串,如果您只是过滤掉关键字,我不确定您是否需要。

我建议:

\b(?!sin\b|cos\b|tan\b)[a-z]+[0-9]?\b

或者,更简单地说,您可以只匹配 \b[a-z]+[0-9]?\b 然后过滤掉关键字列表中的字符串。您不必总是在正则表达式中做所有事情。

关于java正则表达式从较大的字符串中排除特定的字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2191186/

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