你如何逃避达特的星号?
我在regex101测试器上测试了以下正则表达式
\*\*(.*?)\*\*
针对以下字符串
find me **this** and **my other string** please
它会按预期找到两个结果('this'和'my other string')。
在dart中,我在vscode'使用有效的正则表达式语法'中收到警告,但它失败并出现以下错误:
FormatException: Nothing to repeat**(.*?)**
我认为我的星号没有被正确转义。是否有一种特殊的方法来逃避飞镖中的星号?这是一个飞镖靶
https://dartpad.dartlang.org/dbb38b6c97bbc16d994e71e27e9cda30
答案 0 :(得分:3)
您可以使用原始字符串(在字符串文字前加r
new RegExp(r"\*\*(.*?)\*\*");
或通过转义特殊字符
new RegExp("\\*\\*(.*?)\\*\\*");
原始字符串不能与'my string $someVar foo'
之类的字符串插值一起使用,因为raw意味着字面上需要所有字符。
答案 1 :(得分:0)
如果文本来自 TextField,请使用:
RegExp.escape();
示例:
RegExp rex = RegExp('${RegExp.escape(searchText)}', caseSensitive: false, unicode: true);