说我有这个示例字符串
<td><a href="/one-two-three/menus" title="test"</td>
<td><a href="/one-two-three/menus/13:00 title="test"</td>
<td><a href="/one-two-three/schedule/could be multiple delimiters/14:00 title="test"</td>
我希望仅当完整字符串以/one-two-three
开头并以hh:mm
结尾时才使用正则表达式获取2个结果。我想得到:
/one-two-three/menus/13:00
/one-two-three/schedule/could be multiple delimiters/14:00
我尝试过正则表达式/one-two-three[\s\S]+?[0-9][0-9]:[0-9][0-9]
但这给出了
Found 2 matches:
1./one-two-three/menus" title="test"</td> <td><a href="/one-two-three/menus/13:00
2./one-two-three/schedule/could be multiple delimiters/14:00
我可以看到为什么会得到结果,但我的问题是我可以使用哪种模式排除没有hh:mm
的部分,其中/one-two-three
和hh:mm
之间可以有任意数量的分隔符< / p>
答案 0 :(得分:2)
如果HTML结构对您很重要,regex is the wrong approach。
否则(如果你可以在任何地方匹配字符串,只要它被"
包围),你可能想尝试这个:
/one-two-three[^"]+?[0-9][0-9]:[0-9][0-9]
[\s\S]
基本上是指<strong>任何字符。但是你只需要不是"
的字符,因为这标志着路径的结束。
答案 1 :(得分:0)
尝试
搜索
".*\"/{one-two-three}{.*}{[0-9][0-9]:[0-9][0-9]}.*"
替换为
\1 = one-two-three
\2 = middle parts
\3 = hh:mm
如果替换为\1\3
,则会消除中间部分
希望这会有所帮助:)