我尝试使用Regex.Split创建一个字符串数组,这个模式:(?s)(?=label).+?(?=label)
在regex101
我想在单词' 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]);
我没有结果,请帮忙。 (非常感谢)
答案 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。