gpt4 book ai didi

java - 如何使用正则表达式从字符串中排除子字符串的出现?

转载 作者:塔克拉玛干 更新时间:2023-11-01 21:42:26 32 4
gpt4 key购买 nike

我有以下两种形式的字符串输入。

1.

<!--XYZdfdjf., 15456, hdfv.4002-->
<!DOCTYPE

2.

<!--XYZdfdjf., 15456, hdfv.4002
<!DOCTYPE

如果遇到表单 2 而没有匹配表单 1,我想返回一个匹配项。因此,基本上我想要一个正则表达式,它接受 <!--<!DOCTYPE 之间的任意所有字符,除非在两者之间出现 -->

我正在使用 Pattern 、Matcher 和 java 正则表达式。在专门用于 Pattern.compile() 的正则表达式方面寻求帮助

提前致谢。

最佳答案

Pattern p = Pattern.compile("(?s)<!--(?:(?!-->).)*<!DOCTYPE");

(?:(?!-->).)* 一次匹配一个字符,检查它不是 的第一个字符后 - ->

(?s) 设置 DOTALL 模式(又名单行模式),允许 . 匹配换行符。

如果可能有两个或多个匹配项,并且您想单独找到它们,您可以将 * 替换为非贪婪的 *?,如下所示:

"(?s)<!--(?:(?!-->).)*?<!DOCTYPE"

例如,将该正则表达式应用于您的问题文本将找到两个匹配项,而原始正则表达式将找到一个更长的匹配项。

关于java - 如何使用正则表达式从字符串中排除子字符串的出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6299541/

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