我正在测试以下正则表达式并且遇到灾难性的回溯问题。
我的正则表达式是:
(\s|\S)*((\%3C)|<)((\%2F)|\/)*[a-zA-Z0-9\%]+((\s|\S)*)+((\%3E)|>)(\s|\S)*
用字符串测试:
<<<<<<<<<<<<<<<<<<<<<fdslkjdskldsj dsfdlskhfdskhds dskfhdskjfhdsjkfhhaskdfffffshs
请建议我解决我在正则表达式模式中所做的错误。
答案 0 :(得分:0)
原始正则表达式似乎试图匹配简单的HTML标记 - 无论是纯文本还是URL编码形式 - 没有嵌入多行文本的属性。例如paint.setTextAlign(Paint.Align.CENTER);
如果是这样,那么这样的话:
This is some <b>bolded</b> text.
会捕获文本中的标记(并且在给定您提供的输入时不会失败。)
一点一点地解释,这里是如何运作的:
(?i)[\s\S]*?((?:<|%3C)(?:\/|%2F)?[a-z\d]+(?:>|%3E))[\s\S]*?