Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 匹配脚本标记之外的所有事件_Regex - Fatal编程技术网

Regex 匹配脚本标记之外的所有事件

Regex 匹配脚本标记之外的所有事件,regex,Regex,我正在寻找一种方法来匹配窗口中出现的所有不在标记内的单词 是否可以在单个regex中指示此操作 <div class="hidden"> <div class="btn-group window-btn"> <button type="button" class="btn btn-default current"></button> <button type="button" class="btn bt

我正在寻找一种方法来匹配
窗口中出现的所有不在
标记内的单词

是否可以在单个
regex
中指示此操作

<div class="hidden">
    <div class="btn-group window-btn">
        <button type="button" class="btn btn-default current"></button>
        <button type="button" class="btn btn-default prev"><i class="ed sf"></i></button>
        <button type="button" class="btn btn-default next"><i class="ed sf"></i></button>
    </div>
</div>
<div component="tray" class="window-info">
    <div id="missing-window" class="window window-missing clearfix hide" component="msg">
        <button type="button" class="btn close" aria-hidden="true">X</button>
        <p>Window missing. Please try again.</p>
    </div>
</div>
<div class="hide">
    <script>
        window.addEventListener('load', function () {
            define(config.relative_path + '/assets/templates/bw_gj12.js', function () {
                console.log('path configured')
            });
        });
        window.addEventListener('unload', function () {
            leave_msg()
        });
    </script>
</div>

X
窗户不见了。请再试一次

window.addEventListener('load',函数(){ 定义(config.relative_path+/assets/templates/bw_gj12.js',函数(){ console.log('path configured') }); }); addEventListener('unload',函数(){ 离开 });

取决于正则表达式的味道和使用结果的方式。一种方法是将
区域作为一个块进行匹配,然后交替匹配
(窗口)
,然后迭代所有匹配并仅使用捕获。表达式的一个示例:

<script\b[^>]*>[\s\S]*?<\/script>|(window)
]*>[\s\s]*?|(窗口)


这是可行的,因为正则表达式引擎通常会首先尝试匹配交替的左侧。因为这会占用整个脚本块,所以它无法尝试匹配其中的
窗口。因此,它只会尝试匹配它之外的第二个选项。

取决于正则表达式的味道以及您希望如何使用结果。一种方法是将
区域作为一个块进行匹配,然后交替匹配
(窗口)
,然后迭代所有匹配并仅使用捕获。表达式的一个示例:

<script\b[^>]*>[\s\S]*?<\/script>|(window)
]*>[\s\s]*?|(窗口)


这是可行的,因为正则表达式引擎通常会首先尝试匹配交替的左侧。因为这会占用整个脚本块,所以它无法尝试匹配其中的
窗口。因此,它只会尝试匹配它之外的第二个选项。

谢谢您的帮助。那么,我可以在保留脚本块的同时进行替换吗?@Bhorys取决于您想如何使用它。在编程语言中,您通常可以迭代所有匹配项,或者使用匹配函数来影响替换的完成方式。您需要一些逻辑来查找每个匹配对象中捕获的字符串,并跳过所有没有该字符串的匹配,因此在编辑器中直接使用此正则表达式将导致替换所有匹配、脚本块和窗口。感谢您的帮助。那么,我可以在保留脚本块的同时进行替换吗?@Bhorys取决于您想如何使用它。在编程语言中,您通常可以迭代所有匹配项,或者使用匹配函数来影响替换的完成方式。您需要一些逻辑来查找每个匹配对象中捕获的字符串,并跳过所有没有它的匹配,因此在编辑器中直接使用此正则表达式将导致替换所有匹配、脚本块和窗口。