我需要在C#中解析一些JavaScript代码,并找到其中的正则表达式。
当使用RegExp创建正则表达式时,我能够找到。(因为表达式用引号括起来。)当涉及到内联定义时,如下所示:
var x = /as\/df/;我在匹配模式时遇到了困难。我需要从/开始,排除所有字符,直到找到/,但应该忽略\/。
由于自动插入分号或正则表达式可能是其他语句的一部分,我可能不会在语句末尾(;)进行中继,如下所示:
foo(/xxx/); //assume function takes regex param如果我是对的,为了节省时间,在JavaScript的内联正则表达式中不允许换行符。但是,允许执行以下操作:
var a=/regex1def/;var b=/regex2def/;
foo(/xxx/,/yyy/)我需要一些像/.*/这样的正则表达式来捕获正确的数据。
发布于 2013-09-25 16:55:22
您无法仅使用正则表达式可靠地解析编程语言。尤其是Javascript,因为它的语法相当模糊。考虑一下:
a = a /b/ 1
foo = /*bar*/ + 1
a /= 5 //.*/hi这段代码是有效的Javascript,但是这里的/.../都不是正则表达式。
如果您知道自己在做什么;),用于匹配转义字符串的表达式是"delimiter,(某种转义或不是分隔符),delimiter":
delim ( \\. | [^delim] ) * delim在您的例子中,delim是/。
发布于 2013-09-25 16:21:55
这样如何:
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-25 16:31:03
在对RegexHero进行了几次试验之后,这似乎是可行的。/.*?[^\\]/。但是不确定我是不是漏掉了什么角落的案例。
https://stackoverflow.com/questions/18999612
复制相似问题