如何在 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> 的下一个实例(如果有多个脚本标签)。