我正在将一些站点迁移到不同的url,不过我注意到数据库中有许多包含url的序列化条目。我已经找到了一个相对简单的正则表达式来匹配以url开头的字符串,但情况并非总是这样。这是我用的正则表达式。
s:(\d+?):\\\"(https?:\/\/)?example\.com
这与以下内容非常匹配: s:15:\"http://example.com\"
但如果两者之间有什么区别,比如: s:15:\"foo bar example.com\"
(在本例中只是示例)我尝试添加 .*?
在这里匹配中间的字符,但是正则表达式捕捉的太多了。
热释光;医生,我该如何阻止正则表达式捕捉太多。这是正则表达式,我用它来对付一个伪样本。https://regex101.com/r/3grdlo/1
1条答案
按热度按时间ktca8awb1#
除了中间的转义双引号外,您可以匹配任何文本
s:(\d+):\\\"
剩下的模式是:查看regex演示。
添加的图案是
[^\\]*(?:\\(?!\")[^\\]*)*?
:[^\\]*
-任何0+字符\
(?:\\(?!\")[^\\]*)*?
-以下顺序的0+次,尽可能少:\\
-反斜杠(?!\")
-不带双引号[^\\]*
-任何0+字符\