Dart/Flutter中的正则表达式



我正在开发一个具有降价功能的应用程序,所以我正在构建一个词法分析器来处理这个问题。我对Flutter相当陌生,总的来说对Regex几乎没有经验。

本质上*text***text*****text***是有区别的。

我现在的表达是:

r"B*[A-Za-z0-9 ]+*B"
r"B*{2}[A-Za-z0-9 ]+*{2}B"
r"B*{3}[A-Za-z0-9 ]+*{3}B"

问题是第一个表达式匹配其他两个表达式。**text***也将与第二个表达式匹配。有人知道怎么解吗?

看起来你可以使用:

(?<!S)(*{1,3})[A-Za-z0-9 ]+1(?!S)

查看在线演示

  • (?<!S)- Assert位置前面不能有非空格字符;
  • (*{1,3})-匹配1-3个星号字符;
  • [A-Za-z0-9 ]+-从给定字符类中匹配1+字符;
  • 1-反向引用第一组匹配的内容;
  • (?!S)- Assert位置后面除了空白字符之外没有任何东西。

请注意,如果您要删除最后的负面前瞻性,您还可以在**test***中匹配**text**,如果这是您所追求的。或者甚至删除前面的负向后看以匹配****text** test

中的**text**

最新更新