表示正则表达式中的任何字符集

时间:2016-12-24 12:32:49

标签: javascript java regex

我想对待这样的表达式:

表达式1 - >的总和$ 4,8, 'X' $

表达式2 - >的总和$ 2,15, '(X ^ 3 + 3)/(X + 1)' $

我正在使用正则表达式来识别模式:

sum\$[0-9]+[,][0-9]+[,]['][.]*[\w]*[']\$

但它只适用于表达式1,为什么表示任何字符的点(。)似乎不起作用?我是否必须以特殊方式处理括号?

3 个答案:

答案 0 :(得分:3)

.是一个与任意1个字符匹配的元字符。还有其他元字符,如\d,它们将匹配0-9之间的1个字母。 某些元字符在字符类[]中失去了它们的特殊含义。因此,字符类[]内的点不再是元字符,将被视为字面点。

.*.*?是两回事。前者会贪婪地匹配一切,后来很懒惰。例如。取一个字符串:abbcbbbc。现在 a.*c将匹配完整字符串abbcbbbc,而a.*?c仅匹配abbc

你可以试试这样的东西。

sum\$\d+,\d+,'.*?'\$

演示:https://regex101.com/r/6PEfBh/1

答案 1 :(得分:0)

[]的工作方式是匹配字符完全匹配所以在您的情况下,您必须拥有.而不是[],如此:

sum\$[0-9]+[,][0-9]+[,]['].*[\w]*[']\$

这个正则表达式也匹配表达式2

答案 2 :(得分:0)

你可以试试这个

sum\$[0-9]+[,][0-9]+[,]['][^']*[\w]*[']\$

用[^']

替换[。]