我正在尝试使用几个regex来尝试从文件中提取txt。
我尝试这个例子没有成功
假设我有这个字符串:
This is _localizer["my test 1."]' (here I want 'my test 1.')
或
This is _localizer["my test 2."] And this is _localizer["my test 3."]' (here I want 'my test 2.' and 'my test 3.')
在其他情况下,正则表达式需要理解开始锚点(_localizer["(和结束锚点("](,并且需要知道有时同一行中有多个"定位器"。
在我想要提取的txt中,有时会有/或\和其他字符,这些字符可能会使regex失败。
我想做的事:
Regex r = new Regex(@"_localizer[(.+?)]");
var matches = r.Matches(txt)
.Select(xx=> xx.Value)
.Distinct();
欢呼
您的正则表达式字符串应该如下所示:
new Regex(@"(?:_localizer[""(.+?)""])");
让我们把它分解一下。
首先是(?:
-这告诉我们需要在匹配的括号内,但我们不希望数据出现在我们的输出中
那么_localizer[""
-这只是一个文字匹配
下一个(.+?)
-.
匹配任何字符,+
告诉我们想要一个或多个字符,而?
使+
变懒惰,这意味着它将只匹配尽可能少的字符。通过用()
包围这个声明,我们可以说这个数据就是我们想要的
最后是""])
——一个用于右括号和右括号的文字。
此外,为了将这些数据放入一个简单的列表中,您需要将LINQ更改为:
var matches = r.Matches(txt)
.Select(xx=> xx.Groups[1].Value)
.Distinct();