<script> </script>块中的空格规范化

时间:2011-02-19 12:07:26

标签: javascript .net regex

我想编写正则表达式来读取HTML中<script></script>块内的数据。作为脚本,我认为空白是灵活的。为了使我的正则表达式模式健壮,我将不得不预测不同数量的空白。也许有一种比在我的模式中放置许多空白匹配器更简单的方法。例如,可能有一个规范化器? (规范化器当然必须理解字符串文字才能不破坏它们。)

我正在使用.NET和Regex类。 (注意:Regex类有一个ECMAScript选项,我认为它可以启用一个能够理解脚本空白的功能,但是阅读它的描述,似乎没有。)

编辑:Regex类有一个选项“IgnorePatternWhitespace”,但请注意这样可以灵活地编写正则表达式模式。它不会改变解析/匹配行为。

我试图避免在以下类型的模式中将空白匹配器放在许多位置:

const string propertyKey = @""".+""";
const string propertyValue = @""".+""";
string property = propertyKey + @"\x3a" + propertyValue;
string actionProperties = property + @"(\x2c" + property + @")*";
string actionPattern = @"\x7b" + actionProperties + @"\x7d";
string contentPattern = actionPattern + @"(\x2c" + actionPattern + @")*";
string corporateActionsPattern = @"corp_actions\s*:\s*""\s*[" + contentPattern + @"]\s*""";

2 个答案:

答案 0 :(得分:2)

正如kirilloid在评论中已经指出的那样,javascript语言太复杂了,无法通过正则表达式进行解析。你需要的是一个完全成熟的javascript解析器,这是一个非常重要的事情。

你想通过这个实现什么目标?

也许有更好的方法,如果他们知道你希望摆脱它的话,这里的人可以帮助你:)

答案 1 :(得分:0)

不完美的解决方案是通过删除所有空格来规范化脚本(不仅仅是规范化到单个空间)。字符串文字的完整性受到尊重。正则表达式匹配器变得更容易编写。请注意,Javascript将被破坏,因为保留字和标识符将在删除空格时相互碰撞,但如果目标是仅解析“数据”部分(即:字符串文字,数字和标点符号),则问题的风险很低围绕着他们。)