如何在 OR 条件下为 .( 任何字符不是白色 space) 和 \s(space) 等通配符编写正则表达式
how to write regex for wild cards like .(any character not a whitespace) and \s(space) in OR condition
我有以下字符串。
some<script type=\"text/javascript\" language=\"javascript\"><!--\n" +
" tempArr[4728] = 0; \n" +
"//--></script>text
这包括空格和其他非字母字符。
我需要一个正则表达式来替换脚本标签及其内容,所以结果应该是:
some text
我为此尝试了以下正则表达式。
<script(.)*(\s)*(.)*(\s)*(.)*<\/script>
我能够得到输出,但是当我观察正则表达式时,我可以看到重复的条件((.)*
和 (\s)*
的多个副本)。
如何使用正则表达式简化它 OR
?
我尝试使用字符 class - 参见 here。
使用不情愿的量词和全点标志以直接的方式匹配整个 script
标签:
(?s)<script\b.*?</script>
这样使用:
str = str.replaceAll("(?s)<script\b.*?</script>", "");
(?s)
标志也使点匹配换行符。
在 script
之后放置 \b
,这意味着“单词边界”意味着它不会意外匹配 开始 与 script
,例如 <scriptX>
.
.*?
尽可能匹配 几个 个字符,因此它只会匹配 </script>
的下一个实例(如果有多个脚本标签)。
我有以下字符串。
some<script type=\"text/javascript\" language=\"javascript\"><!--\n" + " tempArr[4728] = 0; \n" + "//--></script>text
这包括空格和其他非字母字符。
我需要一个正则表达式来替换脚本标签及其内容,所以结果应该是:
some text
我为此尝试了以下正则表达式。
<script(.)*(\s)*(.)*(\s)*(.)*<\/script>
我能够得到输出,但是当我观察正则表达式时,我可以看到重复的条件((.)*
和 (\s)*
的多个副本)。
如何使用正则表达式简化它 OR
?
我尝试使用字符 class - 参见 here。
使用不情愿的量词和全点标志以直接的方式匹配整个 script
标签:
(?s)<script\b.*?</script>
这样使用:
str = str.replaceAll("(?s)<script\b.*?</script>", "");
(?s)
标志也使点匹配换行符。
在 script
之后放置 \b
,这意味着“单词边界”意味着它不会意外匹配 开始 与 script
,例如 <scriptX>
.
.*?
尽可能匹配 几个 个字符,因此它只会匹配 </script>
的下一个实例(如果有多个脚本标签)。