如何在第一次遇到 space char regex 时分隔匹配的子字符串
How to separate matching substring at first met space char regex
我需要匹配 !some text!https://test.com/
格式的子字符串,其中两个 !
标记之间的任何内容都是文本,后面是 url 没有 spaces,
到目前为止我做了一个可以找到子字符串的正则表达式
(!(.*)!((https|http):\/\/[^\s+]))
但是当类似的模式在文本中的任何地方重复时,它就无法正常工作。
例如
!text goes here!https://amazon.com and some other text comes here
应该解析
!text goes here!https://amazon.com
它做得很完美,但是当我在文本中的任何地方复制这种模式时,它会匹配两个文本之间的整个文本。
即
!text goes here!https://amazon.com some text here !text goes here!https://amazon.com and after some other text
匹配整个文本
应该匹配两个单独的 !text goes here!https://amazon.com some
但它将 select 子字符串直到第二个匹配结束
!text goes here!https://amazon.com some text here !text goes here!https://amazon.com
也许它需要第一个 !
和最后一个 !
之间的整个文本
当space在url文本
之后遇到时,是否有停止匹配的方法
!.*!
匹配由感叹号包围的可能最长的子串;换句话说,它是从第一次爆炸到最后一次爆炸。
您想从第一个 bang 匹配到下一个 bang,这可以是非贪婪匹配 !.*?!
或更精确的匹配 ![^!]*!
。
我需要匹配 !some text!https://test.com/
格式的子字符串,其中两个 !
标记之间的任何内容都是文本,后面是 url 没有 spaces,
到目前为止我做了一个可以找到子字符串的正则表达式
(!(.*)!((https|http):\/\/[^\s+]))
但是当类似的模式在文本中的任何地方重复时,它就无法正常工作。
例如
!text goes here!https://amazon.com and some other text comes here
应该解析
!text goes here!https://amazon.com
它做得很完美,但是当我在文本中的任何地方复制这种模式时,它会匹配两个文本之间的整个文本。
即
!text goes here!https://amazon.com some text here !text goes here!https://amazon.com and after some other text
匹配整个文本
应该匹配两个单独的 !text goes here!https://amazon.com some
但它将 select 子字符串直到第二个匹配结束
!text goes here!https://amazon.com some text here !text goes here!https://amazon.com
也许它需要第一个 !
和最后一个 !
当space在url文本
之后遇到时,是否有停止匹配的方法!.*!
匹配由感叹号包围的可能最长的子串;换句话说,它是从第一次爆炸到最后一次爆炸。
您想从第一个 bang 匹配到下一个 bang,这可以是非贪婪匹配 !.*?!
或更精确的匹配 ![^!]*!
。