正则表达式:忽略特定字符串或特定括号前的 skip/look
Regex : ignoring particular string or skip/look ahead certain bracket
我正在使用此正则表达式匹配并从日志行中提取信息:
^([^(]+)\(([^)]+)\):\s([\w]+)\s([^:]*):\s(.*)\s\[([^\]]+)\]$
对于
,它按预期工作
P:\Application\PativeCommon\Cws2essel.h(50): warning C26812: The enum
type 'Cws2essel::eVesselSource' is unscoped. Prefer 'enum class' over
'enum' (Enum.3). [P:\PativeFunctionLib.vcxproj]
但由于下一行中的 (x86) 而失败
C:\Program Files (x86)\Microsoft
VisualStudio21\Community\VC\Tools\MSVC.28.29333\include\xmemory(702,82):
warning C4244: 'initializing': conversion from 'double' to '_Objty',
possible loss of data
[G:\agent_work\s\Application\FunctionLib.vcxproj]
这是我的代码:
let rx = /^([^(]+)\(([^)]+)\):\s([\w]+)\s([^:]*):\s(.*)\s\[([^\]]+)\]/
let [, codeFile, codeLine, severity, ruleId, message, project] = logLine.match(rx);
regex101 Link: https://regex101.com/r/n5kG86/1
我也需要做哪些修改才能解析带有 (x86)
的行。
有没有办法忽略这个特定的字符串或者向前看并匹配最接近 :
的 ()
请随时提出 better/more 优雅的解决方案。
您可以使用这个正则表达式:
^(.+?)\((\d[\d,]*)\):\s(\w+)\s([^:]*):\s(.*)\s\[([^\]]+)\]$
前 2 个捕获组有重要变化:
^
: 开始
(.+?)
:第一个捕获组匹配一个字符串与一个或多个任意字符(惰性匹配)
\(
: 比赛开始(
(\d[\d,]*)
:第二个捕获组匹配以数字开头后跟 0 个或多个 digit/comma 个字符的字符串
\)
:比赛结束)
我正在使用此正则表达式匹配并从日志行中提取信息:
^([^(]+)\(([^)]+)\):\s([\w]+)\s([^:]*):\s(.*)\s\[([^\]]+)\]$
对于
,它按预期工作P:\Application\PativeCommon\Cws2essel.h(50): warning C26812: The enum type 'Cws2essel::eVesselSource' is unscoped. Prefer 'enum class' over 'enum' (Enum.3). [P:\PativeFunctionLib.vcxproj]
但由于下一行中的 (x86) 而失败
C:\Program Files (x86)\Microsoft VisualStudio21\Community\VC\Tools\MSVC.28.29333\include\xmemory(702,82): warning C4244: 'initializing': conversion from 'double' to '_Objty', possible loss of data [G:\agent_work\s\Application\FunctionLib.vcxproj]
这是我的代码:
let rx = /^([^(]+)\(([^)]+)\):\s([\w]+)\s([^:]*):\s(.*)\s\[([^\]]+)\]/
let [, codeFile, codeLine, severity, ruleId, message, project] = logLine.match(rx);
regex101 Link: https://regex101.com/r/n5kG86/1
我也需要做哪些修改才能解析带有 (x86)
的行。
有没有办法忽略这个特定的字符串或者向前看并匹配最接近 :
()
请随时提出 better/more 优雅的解决方案。
您可以使用这个正则表达式:
^(.+?)\((\d[\d,]*)\):\s(\w+)\s([^:]*):\s(.*)\s\[([^\]]+)\]$
前 2 个捕获组有重要变化:
^
: 开始(.+?)
:第一个捕获组匹配一个字符串与一个或多个任意字符(惰性匹配)\(
: 比赛开始(
(\d[\d,]*)
:第二个捕获组匹配以数字开头后跟 0 个或多个 digit/comma 个字符的字符串\)
:比赛结束)