正则表达式拆分

时间:2016-07-15 02:52:18

标签: regex

我有一个如下所述的字符串。我一直试图使用正则表达式分割并通过论坛,我发现([^ |] +)除了(管道)之外的所有东西都匹配但是我想用正则表达式把它分成两个,但是没能做到这个。因此,一个表达式(xyz)将从GA中提取直到管道字符之前的所有内容,第二个表达式将是(abc),它将在第一个管道之后提取任何内容。

GA1.2.1127630839.1468526914 | 3847EFF358ABEC90-01A39B0290BAC298

3 个答案:

答案 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的回答揭示了正则表达式的许多替代方案。

但是这些方面应该做的事情:

- [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)