Javascript 表示正则表达式中的任意字符集
我想这样对待表达: 表达式1->总和$4,8,'x'$ 表达式2->和$2,15'(x^3+3)/(x+1)“$ 我使用正则表达式来识别模式:Javascript 表示正则表达式中的任意字符集,javascript,java,regex,Javascript,Java,Regex,我想这样对待表达: 表达式1->总和$4,8,'x'$ 表达式2->和$2,15'(x^3+3)/(x+1)“$ 我使用正则表达式来识别模式: sum\$[0-9]+[,][0-9]+[,]['][.]*[\w]*[']\$ 但它只适用于表达式1,为什么表示任何字符的点(.)似乎不起作用?我必须以特殊的方式处理括号吗?工作的方式是它们完全匹配字符,因此在您的情况下,您必须使用不带[]的,如下所示: sum\$[0-9]+[,][0-9]+[,]['].*[\w]*[']\$ 此正则表达式还与
sum\$[0-9]+[,][0-9]+[,]['][.]*[\w]*[']\$
但它只适用于表达式1,为什么表示任何字符的点(.)似乎不起作用?我必须以特殊的方式处理括号吗?工作的方式是它们完全匹配字符,因此在您的情况下,您必须使用不带
[]
的
,如下所示:
sum\$[0-9]+[,][0-9]+[,]['].*[\w]*[']\$
此正则表达式还与表达式2匹配。表达式2是一个元字符,将与任何1个字符匹配。还有其他元字符,如
\d
,它将匹配0-9之间的1个字母一些元字符在字符类[]
中失去了其特殊意义。因此字符类[]
中的点将不再是元字符,而将被视为文字点
*
和*?
是两件不同的事情。前者贪婪地匹配一切,而后者懒惰。例如,取一个字符串,如:abbcbbc
。现在
a.*c
将匹配完整字符串abbcbbc
,而a.*c
将仅匹配abbc
你可以试试这样的
sum\$\d+,\d+,'.*?'\$
演示:你可以试试这个
sum\$[0-9]+[,][0-9]+[,]['][^']*[\w]*[']\$
将[.]替换为[^']为什么此
'[.]*'
不起作用?使用此选项(除工作外)'..*?“
@oschlueter[.]*
匹配文字点字符,例如“…”。这就是我说的角色完全匹配。当您在[]
中有点时,它没有特殊意义,只是一个点。