我想找到所有被“#”字符包围的文本,并且在< script>里面标签。 你会怎么做?例如:
awoie awiefaow <script type="javascript"> #bla#ff awa </script> fawe aaa#bla1# <script>awa #bla2# aa</script>ff
正则表达式只能找到#bla#和#bla2#。
我想出了一些像:
(?i)(?s)((?<=<script.*?>.*?)#.*?#(?=.*?</script.*?>))
但这也会返回#bla1#。
有什么好方法可以解决这个问题?或者在多个文件中进行高级文本搜索是否更灵活?
答案 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