java - 如何在 OR 条件下为通配符编写正则表达式,例如 .(任何字符不是空格)和 \s(空格)
问题描述
我有以下字符串。
some<script type=\"text/javascript\" language=\"javascript\"><!--\n" + " tempArr[4728] = 0; \n" + "//--></script>text
这包括空格和其他非字母字符。
我需要一个正则表达式来替换脚本标签及其内容,所以结果应该是:
some text
我为此尝试了以下正则表达式。
<script(.)*(\s)*(.)*(\s)*(.)*<\/script>
我能够得到输出,但是当我观察正则表达式时,我可以看到重复的条件((.)*
和的多个副本(\s)*
)。
如何使用正则表达式简化它OR
?
我尝试使用字符类 - 请参见此处。
解决方案
使用不情愿的量词和全点标志以直接的方式匹配整个script
标签:
(?s)<script\b.*?</script>
像这样使用它:
str = str.replaceAll("(?s)<script\\b.*?</script>", "");
该(?s)
标志也使点匹配换行符。
Putting\b
表示“单词边界”,afterscript
表示它不会意外匹配以开头的较长标签名称script
,例如<scriptX>
.
.*?
匹配尽可能少的字符,所以它只会匹配到下一个实例</script>
(如果有多个脚本标签)。
推荐阅读
- c - 关于 dma_sync_single_for_cpu() / dma_sync_single_for_device() 的问题
- php - 如何获取这种类型的数组格式
- python - Beautiful Soup4 'NoneType' 对象没有属性 'text' 错误
- apache-spark - 使用 Spark 如何在末尾添加列
- php - 显示假结果,而查询返回真
- r - 有一条线穿过它们的子图
- bluetooth-lowenergy - BLE 读取不正确?
- swift - CoreML 模型预测不同于训练
- java - JDK8 -> JDK10:PKIX 路径构建失败:SunCertPathBuilderException:无法找到请求目标的有效认证路径
- laravel - Vuetify - 在点击事件上添加加载层叠加