从表达式中替换或删除句点/句点



我在PCRE中有这个表达式,我想保留/删除。(句号(出自克兰特努默。

表达式:

^h:/Klant/(?<klantnummer>[^/]+)/(?<folder1>[^/]+)/(?<folder2>[^/]+)

输入:

h:/Klant/12345678.9/map 1/map 2

结果:12345678.9

期望结果:123456789

https://regex101.com/r/EVv47V/1

所以Klantnummer应该有123456789作为的结果

不能一步到位。你可以在两个捕获组中捕获它:

^h:/Klant/(?<klantnummer1>[^./]+).(?<klantnummer2>[^/]+)/(?<folder1>[^/]+)/(?<folder2>[^/]+)

并在两个regex步骤后通过字符串连接将两者放在一起,或者使用两个regex步骤并过滤掉第二个步骤中的句点,如注释中所述。

Regex上面假设总是有一个周期,这将适用于数字中的0或1个周期:

h:/Klant/(?<klantnummer1>[^./]+)(?:.?(?<klantnummer2>[^./]+))/(?<folder1>[^/]+)/(?<folder2>[^/]+)

如前所述,您不能一步到位
使用2个regex阶段的解决方案,或在捕获组之前和之后将klantnummer分为2组的解决方案都会起作用
然而,我相信,就计算机能力和编写代码而言,最简单、最有效的方法是在regex之后和使用它之前,将.替换为空字符串''
您还没有说您使用的是哪种编程语言,所以我不能给您举语法/示例
如果您所做的只是在斜杠上拆分字符串,您可能会发现将字符串拆分为数组更容易
例如在python 中

s = "h:/Klant/12345678.9/map 1/map 2"
array = s.split('/')
Klantnummer=array[2].replace('.','')
folder1=array[3]
folder2=array[4]
print(Klantnummer)
print(folder1)
print(folder2)

输出

123456789
map 1
map 2

测试日期https://www.online-python.com/

最新更新