我很难捕捉到我需要的东西。所以我试图从中捕获的字符串看起来像这样:
Managed client:ASB3200418
字符串我需要捕获冒号后面的A,后面跟着数字(所以忽略SB)。因此,我需要捕捉到这一点:A3200418我试了几个组合,我认为应该工作,但它似乎不工作。以下是我尝试过的:1.第一个月
(?:Managed\s*client:)A.{2}\K[A-Z]*\w*
hfwmuf9z1#
您可以使用2个捕获组,在组1中捕获单个字符A-Z,并在组2中捕获1个或多个数字。
\bManaged\s+client:([A-Z])[^\d\s]*(\d+)\b
字符串模式匹配:
\bManaged\s+client:
Managed client:
([A-Z])
[^\d\s]*
(\d+)
\b
Regex demo或者更具体的:
\bManaged\s+client:(A)SB(\d+)\b
型Regex demo的
uujelgoq2#
您可以使用正则表达式将不需要的内容替换为空字符串,而不是捕获您需要的内容。
^.*:|(?<=[A-Z])[A-Z]
字符串Demo这个表达式是这样的:“匹配从字符串开头(^)到最后一个冒号的所有字符,或者(|)匹配前面有大写字母的大写字母[A-Z]。”(?<=[A-Z])是一个 * 正向后查找 *。这是一个必须满足的Assert,但不是返回的匹配的一部分。还可以将光标悬停在链接处的表达式的每个部分上以获得其功能的解释。
^
|
[A-Z]
(?<=[A-Z])
tvz2xvvm3#
你只需要捕获两个东西,并把它们都放在替换字符串中。例如,在JavaScript中,你可以这样做:
let line="Managed client:ASB3200418"; console.log(line.replace(/Managed client:(\w)..(\w+)/,"$1$2"));
字符串输出量:
A3200418
型
3条答案
按热度按时间hfwmuf9z1#
您可以使用2个捕获组,在组1中捕获单个字符A-Z,并在组2中捕获1个或多个数字。
字符串
模式匹配:
\bManaged\s+client:
将Managed client:
与前导字边界和中间的1+个空格字符匹配([A-Z])
捕获组1,匹配单个字符A-Z[^\d\s]*
匹配除和数字或空格字符以外的可选字符(\d+)
捕获组2,匹配1+位数\b
防止部分字匹配的字边界Regex demo
或者更具体的:
型
Regex demo的
uujelgoq2#
您可以使用正则表达式将不需要的内容替换为空字符串,而不是捕获您需要的内容。
字符串
Demo
这个表达式是这样的:“匹配从字符串开头(
^
)到最后一个冒号的所有字符,或者(|
)匹配前面有大写字母的大写字母[A-Z]
。”(?<=[A-Z])
是一个 * 正向后查找 *。这是一个必须满足的Assert,但不是返回的匹配的一部分。还可以将光标悬停在链接处的表达式的每个部分上以获得其功能的解释。
tvz2xvvm3#
你只需要捕获两个东西,并把它们都放在替换字符串中。例如,在JavaScript中,你可以这样做:
字符串
输出量:
型