我有一个如下所述的字符串。我一直试图使用正则表达式分割并通过论坛,我发现([^ |] +)除了(管道)之外的所有东西都匹配但是我想用正则表达式把它分成两个,但是没能做到这个。因此,一个表达式(xyz)将从GA中提取直到管道字符之前的所有内容,第二个表达式将是(abc),它将在第一个管道之后提取任何内容。
GA1.2.1127630839.1468526914 | 3847EFF358ABEC90-01A39B0290BAC298
答案 0 :(得分:2)
第一个是^[^|]+
,第二个是[^|]+$
。
这个想法是使用带有锚点的否定字符类。 ^
将匹配字符串start,$
将匹配字符串end。
这两种模式没有任何外观,几乎可以用于任何正则表达式。
答案 1 :(得分:1)
猜测流行语言。 : - )
的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('|')
答案 2 :(得分:1)
澄清之后,我得到了你所要求的。摆弄regex101.com,我发现这两个表达式可以给你你想要的东西:
^.*(?=\|)
得到第一部分,和
(?<=\|).*
得到第二个。
当您点击该链接时,您可以看到它的实际效果。
@ smarx的回答揭示了正则表达式的许多替代方案。
但是这些方面应该做的事情:
myString <- 'GA1.2.1127630839.1468526914|3847EFF358ABEC90-01A39B0290BAC298'
part1 <- sub(pattern = "(.*)\\|(.*)", x = myString, replacement = "\\1")
part2 <- sub(pattern = "(.*)\\|(.*)", x = myString, replacement = "\\2")
R
需要将所有反斜杠加倍,而其他一些语言则不需要。
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)