Regex.Split Unity3d

时间:2016-03-05 21:59:17

标签: arrays regex string unity3d split

我尝试使用Regex.Split创建一个字符串数组,这个模式:(?s)(?=label).+?(?=label)regex101

中测试过

enter image description here

我想在单词' label'之间用一大块文本填充一个数组, 我尝试分手的文字块有点像:

*标签1
bla bla bla
 #stuff stuff
更多东西

*标签2
da di da   #dum de do
等等

*标签3
等...

所以(作为一个例子)我想要 BookData [0] =

标签1
bla bla bla
 #stuff stuff
更多东西

*

我在Unity,我有using System.Text.RegularExpressions;,但我有:

string pattern = "(?s)(?=label).+?(?=label)";

    string[] BookData = Regex.Split(input,pattern);

    Debug.Log(BookData[0]);

我没有结果,请帮忙。 (非常感谢)

1 个答案:

答案 0 :(得分:2)

添加{using System.Linq;}后,请将以下正则表达式与Regex.Matches

一起使用
@"(?s)\blabel\b(?:(?!\blabel\b).)*"

请参阅regex demo

您的代码如下:

string[] BookData = Regex.Matches(input, pattern).Cast<Match>().Select(p => p.Value).ToArray();

正则表达式匹配:

  • (?s) - 在.与换行符匹配时启用单行模式
  • \blabel\b - 匹配整个单词label
  • (?:(?!\blabel\b).)* - 匹配任何不是label字符序列起始字符的字符。

如果您不需要检查整个单词,请删除\b s。