【发布时间】:2016-03-05 21:59:16
【问题描述】:
我正在尝试使用 Regex.Split 和以下模式创建一个字符串数组:(?s)(?=label).+?(?=label)
测试于regex101
我想在一个数组中填充单词'label'之间的文本块, 我试图分解的文本块有点像:
*标签 1
呜呜呜
#东西
更多的东西
*标签 2
哒哒哒
#dum de do
等等等等
*标签 3
等等……
所以(例如)我想要 BookData[0] =
标签 1
呜呜呜
#东西
更多的东西
*
我在 Unity 中,顶部有 using System.Text.RegularExpressions;,然后我有:
string pattern = "(?s)(?=label).+?(?=label)";
string[] BookData = Regex.Split(input,pattern);
Debug.Log(BookData[0]);
我没有得到任何结果,请帮助。 (非常感谢)
【问题讨论】:
-
一审,改为
Debug(input +" " +BookData[0]); -
您需要使用此正则表达式进行匹配,而不是拆分。如果可以使用 LINQ,请使用
string[] BookData = Regex.Matches(input, pattern).Cast<Match>().Select(p => p.Value).ToArray();。我还建议使用(?s)\blabel\b(?:(?!\blabel\b).)*正则表达式。 -
非常感谢,我试试看。
-
只需在我的正则表达式中使用逐字字符串文字
@"(?s)\blabel\b(?:(?!\blabel\b).)*" -
宾果维克托!工作一种享受。我添加了
using System.Linq;并使用了“您的模式的逐字版本:string pattern = @"(?s)\blabel\b(?:(?!\blabel\b).)*";”和主数组:string[] BookData = Regex.Matches(input, pattern).Cast<Match>().Select(p => p.Value).ToArray();如果您将答案放在一起,我可以接受。欢呼
标签: arrays regex string unity3d split