我有一个这样的字符串,它是分隔的|
,并且可以包含其间的任何字符:
"one two|three four five|six \| seven eight|nine"
我想找一个返回的正则表达式:
one two
three four five
six | seven eight
nine
我可以考虑如何做到这一点但是,我不太了解正则表达式。我基本上想要匹配,直到我找到|
之前没有\
的{{1}}。我该怎么做呢?我知道有一个后跟踪器,但我不知道该怎么做。
答案 0 :(得分:3)
基本上你想找到这种模式的实例:
@"([^|\\]|\\.)+"
匹配:
[^|\\]
- 除了管道或反斜杠之外的任何字符。\\.
- 任何使用反斜杠转义的字符。(...|...)+
- 一个或多个上述(转义)字符。 \\.
构造很好,因为它可以让你转义任何角色,特别是其他反斜杠。这使您可以在字符串的末尾加上反斜杠,例如:
"backslash \\|forward slash /|pipe \|"
答案 1 :(得分:1)
Regex.Split(input, @"(?<!\\)\|");
(?<!\\)
- 负面的背后隐藏。前面没有\