有没有人能提供一个正则表达式,从最后一个逗号(字段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字段
4条答案
按热度按时间jc3wubiy1#
在您使用的模式中,此部分
\.0\d+
至少匹配2个数字。如果你还想匹配例如
38.0
,这里有一些其他的选择。一个正向后查找
(?<=,)
(如果支持),在左边声明一个逗号Regex demo
使用
\K
忘记了使用pcre时匹配的内容:Regex demo
使用捕获组,首先匹配逗号:
Regex demo
模式的核心是匹配:
\d+
匹配1个或多个数字\.0
匹配点和零\d*
匹配可选数字0-9$
Assert字符串的结尾yduiuuwa2#
这将选择小数点后第一位为
0
的所有最后一列编号:请参见live demo。
lf5gs5x23#
这是一个有趣的问题。
你可以试试这个:
(?<=,)(0\.\d+)
(?<=,)
:这是一个lookbehind,检查主模式之前是否有逗号。0\.\d+
:它匹配一个零,后跟一个小数点和一个或多个数字。这将匹配Z字段中(最后一个逗号之后)以0开头的所有数字。
希望这能帮助你走上正确的道路!
n7taea2i4#
\.0\d+\s
在你发布的示例数据中,空格分隔每个 x,y,z,但我怀疑在你的实际数据中,你有 csv 数据,EOL 或
\r\n
分隔。上面的正则表达式查找.
,后跟0
,后跟一个数字串\d+
,后跟一个空格\s
。如果你的真实的数据是CSV,这应该可以工作:\.0\d+$
这个正则表达式利用了 z 字段是下一条记录之前的最后一个字段的事实。搜索 y 字段会稍微复杂一点,但可以通过查找最多一个前面的逗号来完成。