正则表达式获取所有给定单词旁边的单词

问题描述 投票:0回答:2

我需要一个正则表达式来捕获我提供的所有单词旁边的单词。

例句:

user =“panda”正试图访问resource =“system”

要捕获的词语:熊猫和系统(即“用户”和“资源”字样旁边的单词)

目前,我使用这个名为'panda'的正则表达式(?<=name=\")(.*?)(?=\";)。我正在寻找一个可以捕获上述句子中的用户和资源的查询。

有人可以帮助使用正则表达式查询来执行此操作吗?

c# regex
2个回答
1
投票

由于.NET的正则表达式支持非固定长度的Lookbehinds,您只需在非捕获组中添加所需的所有单词并使用替换:

(?<=(?:user|resource)=\").*?(?=\")

Demo

你也可以通过使用这样的东西摆脱Lookahead:

(?<=(?:user|resource)=\")[^"]*

Demo #2


1
投票

只是一个简单的正则表达式与懒惰匹配应该做的工作

user="(.*?)".*resource="(.*?)"

如果你需要以任何顺序匹配两个以上的单词,它会变得更复杂,在这种情况下我根本不会使用RegEx,你宁愿想为它做一个词法分析器。只需创建一个将首先标记句子的类/过程,然后解析器以获取所需的信息

© www.soinside.com 2019 - 2024. All rights reserved.