regex 任何人都可以提供一个正则表达式,从最后一个逗号(字段Z)中只选择十进制以0开头的数字

wljmcqd8  于 12个月前  发布在  其他
关注(0)|答案(4)|浏览(88)

有没有人能提供一个正则表达式,从最后一个逗号(字段Z)中只选择十进制以0开头的数字?

x,y,z
-37833.6,-47102.7,39.0700
-37817.9600,-47102.9900,40.1900
-37808.7900,-47107.7000,40.3700
-37799.9600,-47106.9900,40.0400
-37815.4200,-47099.2900,40.3100
-37839.3100,-47111.4200,39.1400
-37847.9300,-47127.3800,38.0100
-37854.6200,-47139.7300,38.3600
-37861.2000,-47152.8700,38.0100

我在notepad++ ^\d+(\.0\d+)?$中尝试过,但这只适用于一个字段。我的例子有三个领域。我只想选择Z字段

jc3wubiy

jc3wubiy1#

在您使用的模式中,此部分\.0\d+至少匹配2个数字。
如果你还想匹配例如38.0,这里有一些其他的选择。
一个正向后查找(?<=,)(如果支持),在左边声明一个逗号

(?<=,)\d+\.0\d*$

Regex demo
使用\K忘记了使用pcre时匹配的内容:

,\K\d+\.0\d*$

Regex demo
使用捕获组,首先匹配逗号:

,(\d+\.0\d*)$

Regex demo
模式的核心是匹配:

  • \d+匹配1个或多个数字
  • \.0匹配点和零
  • \d*匹配可选数字0-9
  • $Assert字符串的结尾
yduiuuwa

yduiuuwa2#

这将选择小数点后第一位为0的所有最后一列编号:

\d+\.0\d*$

请参见live demo

lf5gs5x2

lf5gs5x23#

这是一个有趣的问题。
你可以试试这个:
(?<=,)(0\.\d+)
(?<=,):这是一个lookbehind,检查主模式之前是否有逗号。
0\.\d+:它匹配一个零,后跟一个小数点和一个或多个数字。
这将匹配Z字段中(最后一个逗号之后)以0开头的所有数字。
希望这能帮助你走上正确的道路!

n7taea2i

n7taea2i4#

\.0\d+\s
在你发布的示例数据中,空格分隔每个 x,y,z,但我怀疑在你的实际数据中,你有 csv 数据,EOL\r\n分隔。上面的正则表达式查找.,后跟0,后跟一个数字串\d+,后跟一个空格\s。如果你的真实的数据是CSV,这应该可以工作:
\.0\d+$
这个正则表达式利用了 z 字段是下一条记录之前的最后一个字段的事实。搜索 y 字段会稍微复杂一点,但可以通过查找最多一个前面的逗号来完成。

相关问题