应用环视后如何应用正则表达式?

How to apply regex after applying lookarounds?


我有 txt 文件,其中包含如下数据:
文件 1
var field = "123456";

文件 2

var field = abdxg@% "345789";

所以我使用了正则表达式:

(?<=var fhID).*(?=;)


此 returns:文件 1 中的 = "123456" 和文件 2 中的 = abdxg@% "345789"
现在,我想要一个正则表达式,它能够在与环视匹配后仅从字符串中提取数字,即在修改我当前的正则表达式后,我应该在文件 1 中得到 123456345789 在文件 2.

您可以使用此正则表达式并在捕获组中获取匹配的数字:

(?<=var field)[^;\d]*(\d+)[^;]*(?=;)

RegEx Demo

顺便说一句,在后视中应该是 field 而不是 fhID

正则表达式详细信息:

  • (?<=var field):回溯断言我们在当前位置
  • 之前有var field
  • [^;\d]*:匹配0个或多个非;和数字
  • 的任意字符
  • (\d+):匹配捕获组 #1 中的 1+ 个数字
  • [^;]*:匹配0个或多个非;
  • 的字符
  • (?=;):正面前瞻断言我们在当前位置
  • 之前有一个;