相关: https://stackoverflow.com/a/2910549/194031
我有一个字符串:
"abc defgh <!inc(C:\my files\abc.txt)!>kdi kdkd<!inc(C:\my files\abc.txt)!>"
我希望得到:
["abc defgh ", "C:\my files\abc.txt", "kdi kdkd", "C:\my files\abc.txt"]
另外,我不想要
"abc <!inc(C:\my files\abc.txt adf" (missing end bracket)
分开。
根据相关问题和其他类似的答案,我需要使用前瞻,但我无法弄清楚如何在完成删除标记时使用它们,如果缺少部分标记则不会分裂。
答案 0 :(得分:2)
这可能会帮助您入门。您可能需要再定制一些。
Regex.Split("...", @"<!inc\((?=.*?\)!>)|(?<=<!inc\(.*?)\)!>");
表达式分解
<!inc\(
(?=.*?\)!>) // this is the positive lookahead to make sure that the string ')!>`
// exists before counting this as a match
|
(?<=<!inc\(.*?) // positive look behind to make sure '<!inc(' shows up before
\)!>
答案 1 :(得分:2)
这是你的正则表达式
<!inc\((?=[^)]+\)!>)|(?<=<!inc\([^)]+)\)!>
当且仅当它具有匹配的<!inc(
(反之亦然)时,它才会拆分(并删除)每个)!>
。