我有以下RegExp来查找上面列出的URI:
"^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$"
要查找的网址:
将会找到数字1,2和3,但是4.将“www.example-”作为URI提供。 当4月底没有任何意义时,它会正确地传达它。
编辑:删除^
和$
后,只有5号无效。
有人可以帮忙吗?
答案 0 :(得分:1)
你的模式
^w{3}\.[\S\-\n|\S]+[^\s.!?,():]+$
可以简化为
^w{3}\.[\S\n]+[^\s.!?,():]$
[\S\-\n|\S]
这是一个字符类,没有OR可能,不需要重复,-
包含在\ S中。所以[\S\n]
正在做同样的事情。
[^\s.!?,():]+
因为您将每个非空白与此前的表达式匹配,此处不需要+。我假设你只是希望你的模式不要以课堂上的一个角色结束。
查看您的模式on Regexr(我在您的第一堂课中添加了\r
,因为那里的换行需要它)
这是一个非常有用的测试正则表达式的工具
我认为您的问题是您希望允许链接中的换行符。你想怎么处理这个?如果下一行中的单词只是一个单词或链接的一部分,那么如何区分行何时以链接结尾? 我认为这是不可能的!
答案 1 :(得分:0)
问题是第二个方括号部分中的'^ \ s'。根据您的编程语言,'\ s'可能与新行匹配。所以,你告诉它匹配任何不是空格的东西,它会找到一个空格(新行)。
但是,这应该只是您的问题之一。你的正则表达式使用'^'和'$'字符分别表示行的开头和结尾。试试这个URL示例:
你好,来自www.example.org
它匹配了吗?我认为不会。