【问题标题】:regexr.com vs regex101.com [closed]regexr.com vs regex101.com [关闭]
【发布时间】:2020-05-03 06:32:24
【问题描述】:

给定这个字符串:

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

还有这个表达式:

^(?:;+)\R*

我在 regex101.comregexr.com 中得到 2 个不同的结果。 不同之处在于 regex101.com 末尾有一个额外的 \n,在替换框中,而 regexr.com 没有

问题:

1) 根据我有限的正则表达式经验,regexr.com 显示正确答案,这是正确的吗?

2) 是像这些错误这样的差异还是只是实现上的差异?所以基本上他们都是正确的?

【问题讨论】:

    标签: regex pcre


    【解决方案1】:

    两个正则表达式测试器产生相同的结果。 regexr.com 中缺少的新行只是一种错觉,由包含替换结果的 HTML 元素具有readonly 属性引起,使您无法将光标放在新行字符上。但是你不能把光标放在上面,并不代表它不存在。

    如果您清除了正则表达式和替换字段,那么“文本”字段中的任何内容都会直接进入“结果”。然后在“文本”字段中写入一行,按回车键插入新行。您应该无法在“结果”区域中找到该换行符。

    因此,这只是 regexr.com 的一个怪癖,而不是特定于这个特定正则表达式的问题。

    如果您希望能够将光标放在上面,请转到浏览器的开发工具,检查“结果”区域,您会看到它是一个 textarea 元素,如下所示:

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

    删除单词readonly,您应该可以将光标放在换行符上。


    两个正则表达式测试器都是正确的。尽管您在每次匹配后使用 \R 删除了换行符,但结果中的最后一个换行符实际上来自结束行 bb;b 的换行符。由于bb;b 不匹配,因此不会删除此新行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-05
      • 2010-09-22
      • 2013-08-04
      • 1970-01-01
      相关资源
      最近更新 更多