应用环视后如何应用正则表达式?
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 中得到 123456
和 345789
在文件 2.
您可以使用此正则表达式并在捕获组中获取匹配的数字:
(?<=var field)[^;\d]*(\d+)[^;]*(?=;)
顺便说一句,在后视中应该是 field
而不是 fhID
。
正则表达式详细信息:
(?<=var field)
:回溯断言我们在当前位置 之前有var field
[^;\d]*
:匹配0个或多个非;
和数字 的任意字符
(\d+)
:匹配捕获组 #1 中的 1+ 个数字
[^;]*
:匹配0个或多个非;
的字符
(?=;)
:正面前瞻断言我们在当前位置 之前有一个;
我有 txt 文件,其中包含如下数据:
文件 1
var field = "123456";
文件 2
var field = abdxg@% "345789";
所以我使用了正则表达式:
(?<=var fhID).*(?=;)
此 returns:文件 1 中的 = "123456"
和文件 2 中的 = abdxg@% "345789"
。
现在,我想要一个正则表达式,它能够在与环视匹配后仅从字符串中提取数字,即在修改我当前的正则表达式后,我应该在文件 1 中得到 123456
和 345789
在文件 2.
您可以使用此正则表达式并在捕获组中获取匹配的数字:
(?<=var field)[^;\d]*(\d+)[^;]*(?=;)
顺便说一句,在后视中应该是 field
而不是 fhID
。
正则表达式详细信息:
(?<=var field)
:回溯断言我们在当前位置 之前有[^;\d]*
:匹配0个或多个非;
和数字 的任意字符
(\d+)
:匹配捕获组 #1 中的 1+ 个数字[^;]*
:匹配0个或多个非;
的字符
(?=;)
:正面前瞻断言我们在当前位置 之前有一个
var field
;