Regex &引用;电子邮件ip“;将正则表达式转换为日志文件

Regex &引用;电子邮件ip“;将正则表达式转换为日志文件,regex,regex-negation,regex-lookarounds,regex-greedy,Regex,Regex Negation,Regex Lookarounds,Regex Greedy,我有一个日志文件,看起来像: 'User_001','Entered server','email@aol.com','2','','','0','YES','0','0',','0','192.168.1.1','192.168.1.2','0','0','0','0','0','0','0','0','0','1','0','','0','0','0','1' 'User_002','Entered server','email@aol.com','2','','','0','NO','0'

我有一个日志文件,看起来像:

'User_001','Entered server','email@aol.com','2','','','0','YES','0','0',','0','192.168.1.1','192.168.1.2','0','0','0','0','0','0','0','0','0','1','0','','0','0','0','1'
'User_002','Entered server','email@aol.com','2','','','0','NO','0','0',','0','192.168.1.3','192.168.1.4','0','0','0','0','0','0','0','0','0','1','0','','0','0','0','1'

我正试图制作一个正则表达式,以“Email-IP”格式导出内容

我试着用一个正则表达式,比如:

([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}(.*)([0-9]{1,3}[\.]){3}[0-9]{1,3})
但当然不起作用,因为这也会得到两个匹配字符串之间的全部内容

如何忽略找到的两个字符串之间的内容

我试图否定regex部分,但没有成功

提前感谢大家


另外,我需要使用grep来实现这一点这是我丑陋的regex解决方案(有效):

const regex=/([a-z0-9]+@[a-z0-9.]+).*([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})/gi;
const str=`User_001','Entered server','email@aol.com“,”2“,”0“,”是“,”0“,”0“,”0“,”192.168.1.1“,”192.168.1.2“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”1“,”0“,”0“,”0“,”1“;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});

}
这是我丑陋的正则表达式解决方案(有效):

const regex=/([a-z0-9]+@[a-z0-9.]+).*([0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3})/gi;
const str=`User_001','Entered server','email@aol.com“,”2“,”0“,”是“,”0“,”0“,”0“,”192.168.1.1“,”192.168.1.2“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”0“,”1“,”0“,”0“,”0“,”1“;
让m;
while((m=regex.exec(str))!==null){
//这是避免具有零宽度匹配的无限循环所必需的
if(m.index==regex.lastIndex){
regex.lastIndex++;
}
//可以通过'm`-变量访问结果。
m、 forEach((匹配,组索引)=>{
log(`Found match,group${groupIndex}:${match}`);
});


}
看起来像带引号的CSV,那么为什么不使用CSV解析器呢?这是一个纯文本文件,而不是CSV:/CSV文件是一个纯文本文件,其中包含以逗号分隔的固定顺序的值。不是这样吗?我的一些旧日志有不同的格式,没有逗号和顶点,这就是为什么我需要一个regex,你需要的是2的捕获组!!您想要的东西,例如(regex1)(regex2)test@regex101.com,看起来像一个带引号的CSV,那么为什么不使用CSV解析器呢?这是一个纯文本文件,而不是CSV:/CSV文件是一个纯文本文件,其中包含以逗号分隔的固定顺序的值。不是这样吗?我的一些旧日志有不同的格式,没有逗号和顶点,这就是为什么我需要一个regex,你需要的是2的捕获组!!你想要的东西,例如(regex1)(regex2)test@regex101.comMaybe我做了一些错误的事情,这在PHP中是有效的,但是如果我需要使用相同的regex和grep,则无法再次返回整个匹配项。我启动的示例命令:grep-E-o“([a-z0-9]+@[a-z0-9.]+.*([0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3})”a.txtI将添加与PHP等效的命令,但您从未在问题中指定过该语言!嗯。。好吧,我需要在家里做这件事grep@GiuseppePirlo啊,好吧,这在纯grep中似乎是不可能的。你可以试试bash!来源:也许我做错了什么,这在PHP中是有效的,但是如果我需要使用相同的正则表达式和grep,则无法再次返回整个匹配项。我启动的示例命令:grep-E-o“([a-z0-9]+@[a-z0-9.]+.*([0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3}\[0-9]{1,3})”a.txtI将添加与PHP等效的命令,但您从未在问题中指定过该语言!嗯。。好吧,我需要在家里做这件事grep@GiuseppePirlo啊,好吧,这在纯grep中似乎是不可能的。你可以试试bash!资料来源:
([A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,6}(.*)([0-9]{1,3}[\.]){3}[0-9]{1,3})
([a-z0-9]+@[a-z0-9.]+).*?([0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3})