我正在开发一个具有降价功能的应用程序,所以我正在构建一个词法分析器来处理这个问题。我对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**