如果没有足够的确定,我怎么能正则表达式?

时间:2017-09-08 05:15:01

标签: regex go

https://regex101.com/< - 适用于那些想要测试正则表达式的人。

我正在研究印尼价格分析器。

说,我有以下例子:

1)150 k
2)150千字节
3)150 ka
4)150 k2
5)150 k)
6)150 k。

我们知道1),5),6)可以是价格,而显然不可能 我的正则表达式实际上有点复杂,但为简单起见,

让我们说我的正则表达式是:[0-9] +(\ s * [k])

这包括1)到6),所有这些。(
所以我把[^ 0-9a-zA-Z]放到正则表达式:[0-9] +(\ s * [k])[^ 0-9a-zA-Z]

现在我只有1),5),6),这很好。

但是,问题是......他们有不必要的后缀,如[),] 我怎样才能解析150 k'没有任何后缀如[),]与价格信息无关?

我应该在获得5之后再增加一个流程,6)手动去除那些足够的东西吗?

提前感谢您的任何想法。

2 个答案:

答案 0 :(得分:2)

您可以使用word boundary - \b。您也可以在开头使用一个,而不是空格:

\b[0-9]+\s*k\b

工作示例:https://regex101.com/r/RAF2Vg/3

答案 1 :(得分:2)

我认为printf("%*.*f\n", (int)a, (int)b, floatVariable); 符合您的目的。它会检查'k'后是否达到了单词边界。这个单词边界可以是任何东西,是的,甚至是(\d+\s*k)\b。看看这个example