Java:匹配所有不以.htm结尾的字符串?”

标签 java html regex string-parsing

我正在使用正则表达式解析 Java 中的 HTML 文件,我想知道如何匹配所有不以 .htm 结尾的 href=""元素。或.html ,如果匹配,则将引号之间的内容捕获到一个组中

这些是我迄今为止尝试过的:

href\s*[=]\s*"(.+?)(?![.]htm[l]?)"

href\s*[=]\s*"(.*?)(?![.]htm[l]?)"

href\s*[=]\s*"(?![.]htm[l]?)"

据我所知,对于前两个,引号之间的整个字符串都被捕获到第一组中,包括 .htm ( l ) 如果存在的话。

有谁知道如何避免这种情况发生?

最佳答案

您可以重新排列表达式,并将否定前瞻移至捕获之前:

href\s*[=]\s*"(?!.+?[.]htm[l]?")(.+?)"

Here是一个演示。

关于Java:匹配所有不以.htm结尾的字符串?”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150143/

相关文章:

regex - 0 和 1 相等的正则表达式

java - 当用 Java 正则表达式替换反斜杠时,为什么 Pattern 类不能识别单个反斜杠?

java - 如何动态渲染 html 中的图像?

java - 调用 Activity 输入输出动画的最佳位置

html - 使用 css 打破/包装一个长词

javascript - 使用 html 中的输入数据打开特定页面?

java - 在 Maven 存储库中使用已安装的 Java 版本

Java EE 过滤器无法获取 cookie?

html - Opera 在选择元素上设置背景颜色时隐藏下拉列表中的文本

python - 如何在Python列表中使用正则表达式