【发布时间】:2021-05-27 08:13:28
【问题描述】:
我正在尝试使用正则表达式模式在 Unity 中匹配字符串。我已经在一个示例项目中编写了整个代码,它运行得非常好。
tokens[line] = Regex.Matches(instructionLines[line], "^\\w*|(?<=q\\[)\\d*(?=\\]))";
我已通过regex101 验证它符合我的需要。
然后我在控制台中打印了结果,这也是正确的。
Console App:
h 0
h 1
h 2
h 3
cx 1 2
t 1
最后,我将代码复制粘贴到 Unity 中 - 它与示例项目中的行的第一个单词不匹配。
Unity Console:
0
1
2
3
1 2
1
我没有更改任何内容,导入是相同的(使用 System.Text.RegularExpressions;)并且正则表达式是正确的。为什么 Unity 会这样做,我该如何解决这种不正确的行为?
【问题讨论】:
-
尝试添加多行
(?m)^[a-z]*|(?<=q\[)\d*(?=\]) -
成功了,非常感谢!请随时回答问题。
-
是的@Thefourthbird,请将此作为答案,也许可以解释一下它是如何解决问题的
-
@makssyz 您可能想了解 .NET 提供的所有正则表达式选项:Regular Expression Options。
-
@makssyz 在您添加到问题regex101.com/r/FzpZXq/1 的链接中,您可以在右上角看到
m多行标志。由于您的模式使用锚点^,因此您必须启用多行,这也可以使用内联修饰符(?m)来完成,请参阅regular-expressions.info/anchors.html