【发布时间】:2015-07-20 17:31:44
【问题描述】:
我需要使用正则表达式非贪婪方法从字符串中提取某些部分。我正在处理以下字符串:
<a href="/guidance/">Hi</a> </li><li > <a href="/news/institutional/2012/05/000001asdf">Thanks</a>
我需要从中获取:
<a href="/news/institutional/2012/05/000001asdf">Thanks</a>
我一直在尝试使用以下正则表达式:
<a.*?news/.*?/(\d{1,4}\/[01]?\d)?.*?</a>
但它获取所有字符串而不是上面提到的部分字符串。据我了解.*? 捕获最短匹配但它没有按预期工作。
【问题讨论】:
-
这个正则表达式有很多问题。第一个修复是
<a[^>]*?news/.*?/(\d{1,4}/[01]?\d)?.*?</a>,还需要更多修复。 -
@sln 谢谢你的评论。是的,它现在正在工作。您可以将其作为答案,我很高兴接受它。如果你不介意,你能解释一下 [^>] 吗?请让我知道其他修复,因为我正在学习正则表达式,希望我不会再重复同样的事情
-
@AruneshSingh - 除非用作分隔符,否则永远不需要转义正斜杠。
-
我会回答的,但你能告诉我你想用这个选项匹配什么
(\d{1,4}/[01]?\d)? -
我一直在尝试匹配 /2012/05/000001(数字可以不同),因为它需要考虑忽略所有其他没有这种数字模式的字符串
标签: c# regex regex-greedy