正则表达式自定义开始和结束与引号.Net



我正在尝试使用几个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();

最新更新