带有新行的RegExp自适应

带有新行的RegExp自适应,regex,Regex,我使用以下RegExp查找上面列出的URI: "^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$" 要查找的URL: www.example.org www.example-example.org www.example-example.org/product 您可以在www.example-上找到它 example.org/product www.example.org 你会在那里找到的 编号1、2和3将被找到,但编号4。将“www.example-”作为URI提供。 当4

我使用以下RegExp查找上面列出的URI:

"^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$"
要查找的URL:

  • www.example.org
  • www.example-example.org
  • www.example-example.org/product
  • 您可以在www.example-
    上找到它 example.org/product
  • www.example.org
    你会在那里找到的
  • 编号1、2和3将被找到,但编号4。将“www.example-”作为URI提供。 当4的末尾没有点时。它会正确地传递信息

    编辑:删除
    ^
    $
    时,只有数字5不起作用。


    有人可以帮忙吗?

    问题是第二个方括号中的“^\s”。根据您的编程语言,“\s”可能与新行匹配。因此,您告诉它匹配任何非空白的内容,它会找到一个空白(新行)

    然而,这应该只是你的问题之一。正则表达式使用“^”和“$”字符,分别表示行的开始和结束。请尝试以下URL示例:

    您好,来自www.example.org

    匹配吗?我想不会的。

    你的模式

    ^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$
    
    可以简化为

    ^w{3}\.[\S\n]+[^\s.!?,():]$
    
    [\S\-\n |\S]
    这是一个字符类,没有或可能,不需要重复,
    -
    包含在\S中。因此
    [\S\n]
    也在这样做

    [^\s.!?,():]+
    因为您将每个非空格与前面的表达式匹配,所以这里不需要+。我假设您只是希望您的模式不以类中的某个字符结束

    查看您的模式(我在第一节课中添加了
    \r
    ,因为在那里换行需要它)

    这是一个非常有用的测试正则表达式的工具


    我想你的问题是你想在链接中允许换行。你想怎么处理这件事?如果下一行中的单词只是一个单词或链接的一部分,您希望如何区分该行何时以链接结尾我认为这是不可能的

    嗯,没错。不使用“^”和“$”字符也将匹配您的示例和我的4个示例
    但有另一个例子(5.我在顶部编辑我的帖子),它返回我“www.example.org You'll”