【发布时间】:2020-12-17 13:10:03
【问题描述】:
我有以下结构的数据:
abdc efgh 1234-5678\1
abcd efgh 1234-5678
abcd efgh 1234-5678 nmkl
我只想选择数字范围 12345678 或仅选择 \ 字符之前的数字,不包括空格和连字符。所以 abcd efgh 1234-5678\1 会变成 12345678。
我对 reg ex 不是很好。当然我试过[0-9],但我不知道如何转义\字符。
【问题讨论】:
-
正则表达式元字符使用反斜杠进行转义,因此您的模式中的
\\将匹配您输入中的反斜杠。如果您可以使用捕获组,我将匹配([0-9-]+)\\并从第一个捕获组中检索您的1234-5678 -
我认为您是否要匹配除 9 之外的任何数字还是要捕获不包括连字符的数字子串,这有点不清楚。也许您可以更具体一点并更新您的问题
-
如果支持,您可以使用
(?<!\\)[0-9]+regex101.com/r/f5NZtA/1 匹配前面没有反斜杠的数字 -
无法再编辑我的评论,但正则表达式很容易修改为仅检索数字:
([0-9]+)-([0-9]+)\\并使用两个捕获组的串联得到12345678(try it here ) -
@Aaron 你的解决方案没有去掉我使用的程序中的 \ 字符(我认为是用 C++ 构建的 FME?)
标签: regex