2

我有一个字符串:

string s = "GameObject.Find(\"MyObj\").GetComponent(\"MyComponent\")";

我想提取“GameObject.Find(\"MyObj\")”,其中 MyObj 可以包含任何数量或类型的字符,但换行符除外。

这是我的代码:

Match match = Regex.Match(s, "GameObject.Find(\".+\")");

我知道我做错了什么,但我不知道从这里去哪里。我们如何才能使这个表达式按预期工作?

4

2 回答 2

3
Match match = Regex.Match(s, "GameObject.Find(\".+?\")");

您应该进行非贪婪搜索,但要注意它只会从括号+引号匹配到第一个引号+括号。

因此对于,

string s = "GameObject.Find(\"seckin(\\\"hand\\\").thumb()\").GetComponent(\"MyComponent\")"

它会匹配"GameObject.Find(\"seckin(\\\"hand\\\")"

但是没有办法使用正则表达式匹配括号,所以它是最好的次优解决方案。

于 2012-05-20T09:54:57.710 回答
3

也许你应该尝试:

Match match = Regex.Match(s, "GameObject.Find(\".+?\")");
于 2012-05-20T09:55:23.707 回答