正则表达式:搜索由特定字符覆盖的文本,然后搜索特定标记

时间:2011-07-05 12:02:03

标签: regex

我想找到所有被“#”字符包围的文本,并且在< script>里面标签。 你会怎么做?例如:

awoie awiefaow <script type="javascript"> #bla#ff awa </script> fawe aaa#bla1# <script>awa #bla2# aa</script>ff

正则表达式只能找到#bla#和#bla2#。

我想出了一些像:

(?i)(?s)((?<=&lt;script.&#42;?>.&#42;?)#.&#42;?#(?=.&#42;?&lt;/script.&#42;?>))

但这也会返回#bla1#。

有什么好方法可以解决这个问题?或者在多个文件中进行高级文本搜索是否更灵活?

1 个答案:

答案 0 :(得分:0)

这个C#示例使用了lookbehinds。

string input =@"awoie awiefaow <script type=""javascript""> #bla#ff awa </script> fawe aaa#bla1# <script>awa #bla2# aa #bla3# aa</script>ff";
string pattern = @"(?<=<script[^>]*>(?:(?!</script>)(?:[^#]|#(?:(?!</script>)[^#])*#))*#)([^#]*)";
MatchCollection matches = Regex.Matches (input, pattern, RegexOptions.IgnoreCase);

收率:

Match[0] => bla
Match[1] => bla2
Match[2] => bla3