new RegExp("(?<!\\d*\\.\\d*)(报错\\d)(?=(\\d{3})+(?!\\d))")
时间: 2023-11-06 07:06:50 浏览: 103
这个正则表达式的意思是匹配一个数字,这个数字前面不能有小数点,后面必须是三个数字一组,且不以数字结尾。其中,"(?<!\\d*\\.\\d*)"表示负向零宽断言,匹配不以小数点开头的数字;"(报错\\d)"表示匹配以"报错"开头的数字;"(?=(\\d{3})+(?!\\d))"表示正向零宽断言,匹配后面跟着三个数字一组,且不以数字结尾的数字。这个正则表达式可以用于匹配一些特定格式的数字,例如货币金额等。
相关问题
SELECT * FROM table_name WHERE name REGEXP '^(?=.*超市)(?=.*会员).*$'; 查询报错 Got error 'repetition-operator operand invalid' from regexp
这个错误通常是由于正则表达式中使用了不合法的重复操作符导致的。在MySQL的正则表达式中,常用的重复操作符包括*、+和?等,它们用于匹配前面的字符重复出现的次数。但是,如果使用不当,就会出现这个错误。
针对你的情况,可能是因为你在正则表达式中使用了不合法的重复操作符,导致出现了这个错误。具体来说,可能是因为你使用了类似于{2,}这样的语法,而MySQL不支持这种语法。
解决这个问题的方法是检查你的正则表达式,确保其中不包含不合法的重复操作符。如果你需要匹配重复出现的字符,可以使用*、+或?等常用的重复操作符,或者使用类似于{1,10}这样的语法来指定重复出现的次数范围。如果你不确定你的正则表达式是否合法,可以在在线正则表达式测试工具中进行测试,以便及时发现问题。
针对你的查询,你可以尝试以下语法:
```sql
SELECT * FROM table_name WHERE name REGEXP '超市.*会员|会员.*超市';
```
这个查询语句的意思是查询表名为table_name的数据表中,name列同时包含“超市”和“会员”的所有行,并返回这些行的所有列数据。其中,'超市.*会员|会员.*超市'是一个正则表达式,它使用了|操作符表示“或”的关系,表示匹配包含“超市”和“会员”关键字的字符串。同时使用.*来表示任意字符重复出现的次数。
headDiv =regexp(head, '\d*\.?\d*', 'match');
这段代码是使用正则表达式对字符串 `head` 进行匹配,提取其中的数字,并返回一个匹配结果数组 `headDiv`。具体解释如下:
- `regexp()` 是 MATLAB 中的一个函数,用于进行正则表达式匹配。
- `head` 是要进行匹配的字符串。
- `'\d*\.?\d*'` 是正则表达式的模式,其中:
- `\d` 匹配一个数字;
- `*` 表示匹配前面的元素 0 次或多次;
- `\.` 匹配一个点号(需要用反斜杠转义);
- `?` 表示匹配前面的元素 0 次或 1 次;
- `'match'` 是一个选项,表示返回所有匹配的结果。
- 最后得到的 `headDiv` 是一个 cell 数组,其中每个元素都是一个匹配的字符串(即数字)。