powershell - 用于解析字符串的 Powershell 脚本
问题描述
我有一个字符串
设置 Cookie:
ehCookie="X0xhc3RFbnRyeVVSTENvbnRleHQ9aHR0cHM6Ly93d3c5LmNtLmVoZWFsdGhpbnN1cmFuY2UuY29tL2VoaS9ORVdCT0xvZ2luLmRzfF9MYXN0VVJMPWh0dHBzOi8vd3d3OS5jbS5laGVhbHRoaW5zdXJhbmNlLmNvbS9laGkvRGlzcGF0Y2guZnN8X0xhc3RXZWJDb250ZXh0PUJPfF9TZXNzaW9uU3RhcnQ9MDUtMjItMjAyMSAwMjoxMTo0M3xfV2ViQ29udGV4dD1CTw=="; Version=1; Path=/; Secure; HttpOnly,bov1-route=1621674704.476.8922.899787; Path=/; Secure; HttpOnly,JSESSIONID=304447EB52E6D43AB4ABA1191D92D07A; Path=/; Secure; HttpOnly
我想解析ehCookie
&JSESSIONID
的值
X0xhc3RFbnRyeVVSTENvbnRleHQ9aHR0cHM6Ly93d3c5LmNtLmVoZWFsdGhpbnN1cmFuY2UuY29tL2VoaS9ORVdCT0xvZ2luLmRzfF9MYXN0VVJMPWh0dHBzOi8vd3d3OS5jbS5laGVhbHRoaW5zdXJhbmNlLmNvbS9laGkvRGlzcGF0Y2guZnN8X0xhc3RXZWJDb250ZXh0PUJPfF9TZXNzaW9uU3RhcnQ9MDUtMjItMjAyMSAwMjoxMTo0M3xfV2ViQ29udGV4dD1CTw==
和
304447EB52E6D43AB4ABA1191D92D07A
我该如何为此编写powershell脚本。任何帮助将不胜感激。
解决方案
您可以执行以下操作($str
包含要解析的字符串):
if ($str -match 'ehCookie=([^;]+).*JSESSIONID=([\dA-F]+)') {
$ehCookie = $matches[1]
$jSessionId = $matches[2]
}
或者
$ehCookie = ([regex]'(?i)ehCookie=([^;]+)').Match($str).Groups[1].Value
$jSessionId = ([regex]'(?i)JSESSIONID=([\dA-F]+)').Match($str).Groups[1].Value
正则表达式详细信息:
ehCookie= Match the characters “ehCookie=” literally
( Match the regular expression below and capture its match into backreference number 1
[^;] Match any character that is NOT a “;”
+ Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
. Match any single character that is not a line break character
* Between zero and unlimited times, as many times as possible, giving back as needed (greedy)
JSESSIONID= Match the characters “JSESSIONID=” literally
( Match the regular expression below and capture its match into backreference number 2
[\dA-F] Match a single character present in the list below
A single digit 0..9
A character in the range between “A” and “F”
+ Between one and unlimited times, as many times as possible, giving back as needed (greedy)
)
在第二个示例中,(?i)
使大小写不敏感,这在使用第一个示例中.Match
使用的运算符时不需要-match
推荐阅读
- javascript - javascript - 如何有条件地返回 Json
- c# - 替换一个字节的数据
- mysql - 如何杀死窗口中的所有MySQL进程
- c++ - co_return vs. co_yield 当右手边是临时的
- python - socket.gaierror: [Errno 11001] getaddrinfo failed for python and local mysql server
- java - 如何更改 FingerTableEntry 的每个元素中 nodeURL 的值
- javascript - 错误:找不到模块“/app/react-web/react-scripts”
- python - Pandas - 使用现在分隔符的列数据转换
- python - 如何根据 Airflow 中的不同日期为同一个 DAG 设置不同的时间表
- android - Android的UI线程是OpenGL线程吗