具体的正则表达式

时间:2012-09-27 12:23:33

标签: c# regex

说我有这个示例字符串

    <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-threehh:mm之间可以有任意数量的分隔符< / p>

2 个答案:

答案 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,则会消除中间部分

希望这会有所帮助:)