我有一个批处理文件,该文件正在从远程服务器提取信息并显示有关我的一项服务的信息。
我正在使用的批次如下:
tasklist /s TESTING1 /u TESTSvc /p T$ST1ng /fi "services eq test"
运行批处理时,我可以获取信息,但是需要创建一个Regex,它可以让我知道内存是否大于一定数量。我是Regex的新手,需要弄清楚该如何写。
批处理结果如下:
Image Name PID Session Name Session# Mem Usage
========================= ======== ================ =========== ============
tomcat9.exe 5628 Services 0 1,455,204 K
我看过Regex for number check below a value,Regex for dollar amount greater than $500,Extracting string from logs with regex in pig script。
我尝试了每种方法的推荐答案,但没有得到所需的结果。
该服务的内存可能会超过显示的内存。如果它高于1.8gb,则服务开始无法正确响应。
答案 0 :(得分:3)
要匹配1,800,000
和999,999,999
之间的任何数字,后跟一个空格字符和字母K
,您可以使用:
\b(?:1,[89]|(?:[2-9]|[1-9]\d{1,2}),\d)\d\d,\d{3} K
演示:https://regex101.com/r/H3qaB4/1
故障:
\b # Word boundary.
(?: # Start of a non-capturing group.
1, # Matches `1,` literally.
[89] # Matches 8 or 9 literally.
| # Alternation (OR).
(?: # Start of 2nd non-capturing group.
[2-9] # Matches any digit between 2 and 9.
| # OR..
[1-9] # A digit between 1 and 9.
\d{1,2} # Followed by one or two digits.
) # End of 2nd non-capturing group.
, # Matches `,` literally.
\d # Matches one digit.
) # End of 1st non-capturing group.
\d\d # Matches two digits.
, # Matches `,` literally.
\d{3} # Matches 3 digits.
K # Matches `K` literally.
要使下界1,200,000
而不是1,800,000
,只需将[89]
部分替换为[2-9]
:
\b(?:1,[2-9]|(?:[2-9]|[1-9]\d{1,2}),\d)\d\d,\d{3} K
答案 1 :(得分:1)
一种获得1.8 G-999.9 T的方法
就像这样:
[ ](1,[89]\d{2},\d{3}|[2-9],\d{3},\d{3}|[1-9]\d{1,2},\d{3},\d{3}|[1-9]\d{0,2},\d{3},\d{3},\d{3})[ ]K$
扩展
[ ]
( # (1 start)
1, [89] \d{2} , \d{3} # 1.8 G - 1.99 G
|
[2-9] , \d{3} , \d{3} # 2.0 G - 9.9 G
|
[1-9] \d{1,2} , \d{3} , \d{3} # 10.0 G - 999.9 G
|
[1-9] \d{0,2} , \d{3} , \d{3} , \d{3} # 1.0 T - 999.9 T
) # (1 end)
[ ]
K
$