0

我需要在 C# 中解析一些 JavaScript 代码并在其中找到正则表达式。

当使用 RegExp 创建正则表达式时,我能够找到。(因为表达式用引号括起来。)当涉及到内联定义时,类似于:

var x = /as\/df/;

我在匹配模式方面遇到困难。我需要从 a 开始/,排除所有字符,直到/找到 a 但应该忽略\/

;由于自动分号插入或正则表达式可能是其他语句的一部分,我可能不会在语句()的末尾中继,例如:

foo(/xxx/); //assume function takes regex param

如果我是对的,JavaScript 中的内联正则表达式中不允许换行以节省我的时间。但是,允许以下情况:

var a=/regex1def/;var b=/regex2def/;
foo(/xxx/,/yyy/)

/.*/我需要像这样捕获正确数据的正则表达式。

4

4 回答 4

3

您不能仅使用正则表达式可靠地解析编程语言。尤其是 Javascript,因为它的语法很模糊。考虑:

a = a /b/ 1
foo = /*bar*/ + 1
a /= 5 //.*/hi

这段代码是有效的 Javascript,但/.../这里没有一个是正则表达式。

如果您知道自己在做什么;),匹配转义字符串的表达式是“分隔符,(转义或非分隔符),分隔符”:

 delim ( \\. | [^delim] ) * delim

delim你的情况在哪里/

于 2013-09-25T08:55:21.943 回答
0

我认为这可能会帮助你 var patt=/pattern/modifiers;

•pattern 指定表达式的模式 •modifiers 指定搜索是否应该是全局的、区分大小写的等。

于 2013-09-25T09:15:44.630 回答
0

这个怎么样:

Regex regexObj = new Regex(@"/(?:\\/|[^/])*/");

解释:

/       # Match /
(?:     # Non-capturing group:
 \\     # Either match \
 /      # followed by /
|       # or
 [^/]   # match any character except /
)*      # Repeat any number of times
 /      # Match /
于 2013-09-25T08:21:54.960 回答
0

在使用 RegexHero 进行了几次试验后,这似乎奏效了。/.*?[^\\]/. 但不确定我是否遗漏了任何角落案例。

于 2013-09-25T08:31:02.617 回答