正则表达式正在切割我的字符串

时间:2018-05-31 02:14:13

标签: regex

我有以下正则表达式:

\s?(\w+)=(\w+)?\s?

我的输入是

Brutto=57.800

比赛只是

Brutto=57

如何获得以下结果?

Brutto=57.800

5 个答案:

答案 0 :(得分:1)

我会得到所有“非空间”字符:

\s?(\w+)=(\S*)\s?

仅供参考(\S*)(\S+)?具有相同的效果,但更简单。

答案 1 :(得分:0)

如果值始终包含小数点\s?(\w+)=(\d+.\d+)?\s?

,则可以使用类似的值

答案 2 :(得分:0)

你必须单独处理点(并用反斜杠转义):

\s?(\w+)=(\w+\.?\w+)?\s?

答案 3 :(得分:0)

如果你需要匹配,你可以试试\s?\w+=\d+.\d+\s?

如果您需要分组,也可以尝试\s?(\w+)=(\d+.\d+)\s?

你也可以用\ w替换\ d,因为\ d只代表数字,而\ w代表任何字母数字字符。

答案 4 :(得分:0)

在正则表达式中,您使用的\w+57.800中的点不匹配,因此它与57匹配。

如果您的目标是在开始和结束时将等号后的数字与可选的空格字符\s?匹配,则可以使用:

\s?\w+=[0-9]+\.[0-9]+\s?

请注意,我没有使用捕获的群组()。如果您想使用群组检索匹配项,可以使用(\w+)([0-9]+\.[0-9]+)

如果.800是可选的,您可以使用\s?\w+=[0-9]+(?:\.[0-9]+)?\s?