我有一个字符串,如下所述。我一直试图使用正则表达式进行拆分,并在论坛中找到(^|+),它将匹配除(管道)之外的所有内容,但是我希望使用正则表达式将其分解为两个,但无法做到这一点。因此,一个表达式是(xyz),它从GA中提取到管道字符之前的所有内容,第二个表达式是(abc),它将在第一个管道之后提取任何内容。
GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298
发布于 2016-07-14 21:53:33
第一个是^[^|]+
,第二个是[^|]+$
。
这样做的目的是使用带有锚的否定字符类。^
将匹配字符串开始,$
将匹配字符串结束。
这两种模式没有外观,几乎可以满足任何正则表达式的口味。
发布于 2016-07-14 19:04:53
猜流行语言。:-)
Python:
'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'.split('|')
JavaScript:
'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'.split('|')
PHP:
explode('|', 'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298')
去:
strings.Split("GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298", "|")
红宝石:
'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'.split('|')
发布于 2016-07-14 19:15:29
编辑
澄清后,我明白你的要求。在使用regex101.com时,我发现这两个表达式应该给您想要的东西:
^.*(?=\|)
获得第一部分,并且
(?<=\|).*
获得第二个。
当您单击该链接时,您可以看到它正在运行。
先前的回答
@smarx的答案揭示了正则表达式的许多替代方法。
但这方面的一些东西应该可以做到:
R
myString <- 'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'
part1 <- sub(pattern = "(.*)\\|(.*)", x = myString, replacement = "\\1")
part2 <- sub(pattern = "(.*)\\|(.*)", x = myString, replacement = "\\2")
R
需要加倍所有反斜杠,而其他一些语言则不需要。
Python
import re
myString = 'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'
part1 = re.sub(pattern="(.*)\|(.*)", repl = "\\1", string = myString)
part1 = re.sub(pattern="(.*)\|(.*)", repl = "\\2", string = myString)
https://stackoverflow.com/questions/38387164
复制相似问题