首页 > 解决方案 > 用于在 = 和 ; 之间捕获单词的正则表达式

问题描述

我想word2从以下选择:

word2;word3

word2那是在;和开始之间,除非中间有一个=。在这种情况下,我想从行=开始而不是从行的开头word2

word1=word2;word3

我试过使用这个正则表达式

(?<=\=|^).*?(?=;)

word2从中选择

word2;word3

还要整word1=word2

word1=word2;word3

标签: c#regexregex-lookaroundsregex-groupregex-greedy

解决方案


您可以使用可选组来检查后跟等号的单词并捕获第一个捕获组中的值:

^(?:\w+=)?(\w+);

解释

  • ^字符串的开始
  • (?:\w+=)?可选的非捕获组匹配 1+ 单词字符,后跟=
  • (\w+)在第一个捕获组中捕获 1+ 个单词字符
  • ;匹配;

查看正则表达式演示

在 .NET 中,您还可以使用:

(?<=^(?:\w+=)?)\w+(?=;)

正则表达式演示| C# 演示

在此处输入图像描述


推荐阅读