我有以下内容
ONE
1234234534564 123
34erewrwer323 123
123fsgrt43232 123
TWO
42433412133fr 234
fafafd3234132 342
THREE
sfafdfe345233 3234
FOUR
324ereffdf343 4323
fvdafasf34nhj 4323
fsfnhjdgh342g 4323
考虑ONE,TWO,THREE and FOUR
是单独的组。基于每个组中每行第二个值的条件,我只想匹配ONE
和FOUR
,并且将匹配其中有多行的组。如何在正则表达式中做到这一点
我已经尝试过使用正则表达式,但是不符合要求
\w+\n\w+\t(\d+)(\n\w+\t\1){2,}
答案 0 :(得分:1)
您可以使用
public partial class View : System.Web.UI.UserControl, IView
{
public Presenter.Factory PresenterFactory { get; set; }
public string Text
{
set
{
lbText.Text = value;
}
}
protected void Page_Load(object sender, EventArgs e)
{
var presenter = PresenterFactory(this);
}
}
public class Presenter
{
public delegate Presenter Factory(IView view);
public Presenter(IView view)
{
view.Text = "Hello World";
}
}
请参见regex demo。
详细信息
r'(?m)^[A-Z]+\r?\n\S+\s+(\d+)(?:\r?\n\S+\s+\1)+$'
-启用(?m)
模式以使re.MULTILINE
/ ^
分别与行的开始和结束匹配$
-一行的开头^
-1个以上的大写ASCII字母(视情况调整)[A-Z]+
-换行符,例如CRLF或LF \r?\n
-1个以上非空格字符\S+
-1个空格(如果选项卡是字段分隔符,则使用\s+
)\t
-捕获组1,一位或多位数字(\d+)
-一个或多个换行符,后跟1+个非空格,1 +个空格,并且与组1中的值相同,因为(?:\r?\n\S+\s+\1)+
是对存储在其中的值的反向引用该组\1
-行尾。在Python中,使用$
:
re.finditer
请参见Python demo。