正则表达式:用引号和至少一个字符括起来的分号

时间:2019-05-20 12:21:10

标签: regex csv notepad++

我需要一个正则表达式(在notepad ++中可用),该正则表达式可捕获用引号引起来的分号,并且引号和分号之间至少应包含一个字符。

  • 此分号应匹配:"asdf;a3"
  • 此分号不应匹配:";"

直到现在我有以下正则表达式:\"(.*?)\"

但是,这匹配引号之间的所有内容。我只需要用分号作为匹配项。

感谢您的帮助。

2 个答案:

答案 0 :(得分:1)

您可以使用捕获组,并且negated character class与列出的任何字符都不匹配:

public class Model {
  public IEnumerable<Int32> values { get; set; }
}

Regex demo

或者利用Type propertyType = context.getPropertyType["values"]; 忘记被剥皮的东西和积极的前瞻性:

 "[^";]+(;)[^;"]+"

Regex demo

要在双引号之间匹配乘法分号,可以使用\K

说明

"[^;"]+\K;(?=[^;"]+")
  • \G非捕获组
    • (?:"|\G(?!^))[^";]+\K;(?=[^"]+") 匹配(?:
    • "
    • "在上一场比赛的末尾而不是在开始时断言
  • |关闭非捕获组
  • \G(?!^)匹配1次以上,而不是)[^";]+
  • "忘记匹配的内容并匹配'
  • \K;正向前进,断言右边的数字是{+1倍而不是;,然后匹配(?=[^"]+")

Regex demo

注意:如果不想匹配换行符,可以将其添加到字符类"

答案 1 :(得分:0)

尝试此正则表达式:

/.+?\;.+?/g

Here是一个链接,可以帮助您了解此正则表达式的流程。

Here是显示此正则表达式演示的链接。