我需要在C#中解析一些JavaScript代码并在其中找到正则表达式。
使用RegExp创建正则表达式时,我能够找到。 (因为表达式用引号括起来。)当涉及到内联定义时,类似于:
var x = /as\/df/;
我在匹配模式方面遇到困难。我需要从/
开始,排除所有字符,直到找到/
,但应忽略\/
。
由于自动分号插入或正则表达式可能是其他语句的一部分,我可能不会在语句(;
)的结尾处转发,例如:
foo(/xxx/); //assume function takes regex param
如果我是对的,JavaScript中的内联正则表达式中不允许换行以节省我的一天。但是,允许以下内容:
var a=/regex1def/;var b=/regex2def/;
foo(/xxx/,/yyy/)
我需要像/.*/
那样捕获正确数据的正则表达式。
答案 0 :(得分:3)
您无法仅使用正则表达式可靠地解析编程语言。特别是Javascript,因为它的语法很模糊。考虑:
a = a /b/ 1
foo = /*bar*/ + 1
a /= 5 //.*/hi
此代码是有效的Javascript,但这里的/.../
都不是正则表达式。
如果你知道你正在做什么;),匹配转义字符串的表达式是“分隔符,(某些转义或不分隔符),分隔符”:
delim ( \\. | [^delim] ) * delim
在您的情况下,delim
为/
。
答案 1 :(得分:0)
这个怎么样:
Regex regexObj = new Regex(@"/(?:\\/|[^/])*/");
<强>说明:强>
/ # Match /
(?: # Non-capturing group:
\\ # Either match \
/ # followed by /
| # or
[^/] # match any character except /
)* # Repeat any number of times
/ # Match /
答案 2 :(得分:0)
在使用RegexHero进行多次试验后,这似乎有效。 /.*?[^\\]/
。但不确定我是否遗漏任何角落案件。
答案 3 :(得分:0)
我认为这可能会对你有所帮助 var patt = / pattern / modifiers;
•pattern指定表达式的模式 •修饰符指定搜索是全局的,区分大小写的等等。