RegEx查找不在输入中的单词列表

RegEx查找不在输入中的单词列表,regex,vb.net,Regex,Vb.net,我正在使用正则表达式尝试查找输入中没有的短语列表 不久前,我问了一个类似的问题,并使用下面的第一个示例得到了我需要的答案,该示例正确地捕获了所有不在模式中的单词。在本例中,它捕获“newlabel” 我现在需要的是类似的东西,但是我不需要捕获“newlabel”,而是需要它返回模式中的任何短语,这些短语不在一行开头的输入中 (^|\r\n).*?:(?<!(^|\r\n)(?:label1|label2|label3|some label):) Input: label1 new va

我正在使用正则表达式尝试查找输入中没有的短语列表

不久前,我问了一个类似的问题,并使用下面的第一个示例得到了我需要的答案,该示例正确地捕获了所有不在模式中的单词。在本例中,它捕获“newlabel”

我现在需要的是类似的东西,但是我不需要捕获“newlabel”,而是需要它返回模式中的任何短语,这些短语不在一行开头的输入中

(^|\r\n).*?:(?<!(^|\r\n)(?:label1|label2|label3|some label):)

Input: 
label1 new value
label2 a value
label3 anything
newlabel something
我在做这件事是C#

非常感谢您的帮助

(^|\r\n).*?:(?<!(^|\r\n)(?:label1|label2|label3|some label):)

Input: 
label1: value 
label2: value
label3: value
newlabel: value
(^ |\r\n)。*?:(?
这将正确地获取“newlabel”

我现在需要的是类似的东西,但是我不需要得到“newlabel”,而是需要它返回“somelabel”,或者模式中的任何短语,这些短语不在一行开头的输入中

(^|\r\n).*?:(?<!(^|\r\n)(?:label1|label2|label3|some label):)

Input: 
label1 new value
label2 a value
label3 anything
newlabel something
(^ |\r\n)。*?:(?

最后,短语“some label”应该是唯一被捕捉到的东西

我猜你可能正在尝试设计一个类似以下的表达式:

^(?!(^\b(?:label1|label2|label3|newlabel)\b))([^:]*?)\s*:\s*([^\r\n]*)$
也许吧,但不确定


如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 .如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入


正则表达式电路 可视化正则表达式:


我猜您可能正在尝试设计一个表达式,它看起来有点像:

^(?!(^\b(?:label1|label2|label3|newlabel)\b))([^:]*?)\s*:\s*([^\r\n]*)$
也许吧,但不确定


如果您希望探索/简化/修改该表达式,它已被删除 在的右上面板上进行了说明 .如果你愿意,你可以 也可以观看,它将如何匹配 对照一些样本输入


正则表达式电路 可视化正则表达式:


我做的这件事是C。
但是你标记了vb.NET你的意思是这样的吗?
^(?(?:label[123]| newlabel)\b.*$
我做的这件事是C。
但是你标记了vb.NET你的意思是这样的吗?
^(?((?:label[123]| newlabel)\b).*$
谢谢@Emma,但这不是我所需要的。我需要捕获模式中的值“some label”,而不是输入中的文本。我需要它来告诉我模式中的一个词不在输入中。希望这有意义我的项目是确保用户在输入中添加了所有正确的字段。这s regex必须告诉我用户输入中是否缺少字段。嗨@Emma,虽然我无法将您的代码行用于原始目的,但我可以用它替换一个相当难看的行。太好了。谢谢:)谢谢@Emma,但这不是我所需要的。我需要捕获模式中的值“some label”,而不是输入中的文本。我需要它来告诉我模式中的一个单词不在输入中。希望这有意义。我的项目是确保用户在输入中添加了所有正确的字段。这个正则表达式告诉我用户输入中是否缺少一个字段。嗨@Emma,虽然我无法将您的代码行用于原始目的,但我可以用它替换一个相当难看的行。太好了。谢谢:)