regexr.com vs regex101.com

问题描述 投票:1回答:1

给予这个字符串,

 z;
hh ;d;
;
;
;
12;b
;
bb;b
;;;
;;

还有这个表达式

^(?:;+)\R*

我得到两个不同的结果 regex101.comregexr.com. 不同的是,regex101.com在末尾的替换框中多了一个\n,而regexr.com则没有。

的问题。

1)从我有限的regex经验来看,regexr.com显示的是正确的答案,这个正确吗?

2)像这些bug还是仅仅是实现上的差异?所以基本上它们都是正确的?

regex pcre regex101
1个回答
0
投票

两个regex测试器产生的结果是一样的。在regexr.com中,缺少的新行只是一种错觉,是由于包含替换结果的HTML元素有一个属性为 readonly,使你无法将光标放在新的行字符上。但是你不能把光标放在上面,并不意味着它不存在。

如果你同时清除了regex和替换字段,使 "text "字段中的任何内容直接进入 "result"。然后在 "文本 "字段中写上一行,按回车键插入新的一行。在 "结果 "区域应该找不到那个新行字符。

enter image description here

因此, 这只是 regexr.com 的一个怪癖, 并不是这个特定的 regex 所特有的问题.

如果你想把你的光标放在上面, 去你的浏览器的开发工具中, 检查 "结果 "区域, 你会看到它是个 textarea 这样的元素。

<div class="result">
    <textarea readonly>
        ...
    </textarea>
</div>

删除这个词 readonly你应该可以把你的光标放在新的行字符上。


两个regex测试器都是正确的。虽然你在每次匹配后使用 \R结果中的最后一个新行字符实际上来自于该行结束的新行字符。bb;b. 由于 bb;b 是不匹配的,这条新线不会被删除。

© www.soinside.com 2019 - 2024. All rights reserved.