这是我的正则表达式:
\b(https?|www)://[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*[-a-zA-Z0-9+&@#/%=~_|]*[.]{1,256}
我知道我做错了,因为我很少使用RegEx。
最后一个[.]{1,256}
的想法是确保至少有一个“”。在。
因此,没有它,我得到了“ https://www”匹配项,因此我想确保至少存在一个点。
但是使用上面的表达式,它会切到第一个点,而不是整个切点。
答案 0 :(得分:1)
[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*
和[-a-zA-Z0-9+&@#/%=~_|]*
都可以匹配一个空字符串,并且模式末尾的[.]{1,256}
可以匹配1到256个点,这就是为什么匹配到一个点的原因
您可以重构模式以匹配点之前允许的所有字符,然后匹配点,然后匹配您允许的任意数量的字符以及点:
\b(https?|www)://[-a-zA-Z0-9+&@#/%?=~_|!:,;]*\.[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*
在这里
[-a-zA-Z0-9+&@#/%?=~_|!:,;]*
-匹配0个或多个您允许的字符,但一个点即可。\.
-匹配一个点[-a-zA-Z0-9+&@#/%?=~_|!:,.;]*
-允许0个或多个字符,包括一个点。因此,至少要匹配一个点。