你如何在 Dart 中避开星号?
我已经在 regex101 测试仪上测试了以下正则表达式
\*\*(.*?)\*\*
Run Code Online (Sandbox Code Playgroud)
针对以下字符串
find me **this** and **my other string** please
Run Code Online (Sandbox Code Playgroud)
它按预期找到两个结果(“this”和“my other string”)。
在 dart 中,我在 vscode 中收到警告“使用有效的正则表达式语法”,但失败并显示以下错误:
FormatException: Nothing to repeat**(.*?)**
Run Code Online (Sandbox Code Playgroud)
我认为我的星号没有被正确转义。有没有一种特殊的方法来逃避飞镖中的星号?这是一个飞镖
https://dartpad.dartlang.org/dbb38b6c97bbc16d994e71e27e9cda30
您可以通过使用原始字符串来解决这个问题(在字符串文字前加上 r
new RegExp(r"\*\*(.*?)\*\*");
Run Code Online (Sandbox Code Playgroud)
或通过转义特殊字符
new RegExp("\\*\\*(.*?)\\*\\*");
Run Code Online (Sandbox Code Playgroud)
原始字符串不能与像 那样的字符串插值一起使用'my string $someVar foo',因为原始意味着它按字面意思接受所有字符。
如果文本来自 TextField 使用以下命令:
RegExp.escape();
Run Code Online (Sandbox Code Playgroud)
样本:
RegExp rex = RegExp('${RegExp.escape(searchText)}', caseSensitive: false, unicode: true);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |