正则表达式匹配冒号右边的字符
Regex to match characters to the right of a colon
我卡在正则表达式上了。我试图将任何语言中的单词匹配到冒号 的右侧,而不匹配冒号本身 。
基本规则:
要使一行有效,它不得以 [a-z0-9_]
以外的任何字符开头或包含 :
之后的任何字符。
:
右侧的任何字符都应该匹配,只要该行以上面定义的字符集开头。
例如,给定如下字符串:
this string should not match
bob_1:Hi. I'm Bob. I speak русский and this string should match
alice:Hi Bob. I speak 한국어 and this string should also match
http://example.com - would prefer to not match URLs
This string:should not match because no spaces or capital letters are allowed left of the colon
以上 5 个字符串中只有 2 个需要匹配。并且只在冒号的右边。
Hi. I'm Bob. I speak русский and this string should match
Hi Bob. I speak 한국어 and this string should also match
我目前正在使用 (^[a-z0-9_]+(?=:))
来匹配 :
左侧的字符。我似乎无法扭转逻辑。
我目前最接近的是 (?!(?!:)).+
。这似乎匹配冒号右侧的所有内容以及冒号本身。我只是不知道如何在比赛中不包括 :
。
你们中的哪位正则表达式向导可以帮助我吗?如果有任何不清楚的地方,请告诉我。
您可以使用这个正则表达式:
^[a-z0-9_]+:\K(?!//).*
正则表达式分解:
^
: 开始
[a-z0-9_]+
:匹配 1+ 个 [a-z0-9_]
个字符
:
:匹配冒号
\K
: 重置目前匹配的信息
(?!//)
:在冒号之后禁止 //
的否定前瞻,以避免匹配 潜在 URL
.*
: 匹配任何内容直到结束
您可以使用正则表达式:^.*?:(.*)$
^.*?:
- 从行首开始,包括冒号(非贪婪)之前的任何字符
(.*)$
- 使用匹配组匹配它后面的任何内容,直到行尾
短正则表达式模式(不区分大小写):
^\w+:(\w.*)
\w
- 匹配任何单词字符(等于 [a-zA-Z0-9_]
)
https://regex101.com/r/MZhqSL/6
正如您标记的 pcre
,这是您需要的模式(仅在冒号右侧):
^\w+:\K\w.*
\K
- 重置报告匹配的起点。任何先前消耗的字符不再包含在最终匹配中
我卡在正则表达式上了。我试图将任何语言中的单词匹配到冒号 的右侧,而不匹配冒号本身 。
基本规则:
要使一行有效,它不得以
[a-z0-9_]
以外的任何字符开头或包含:
之后的任何字符。:
右侧的任何字符都应该匹配,只要该行以上面定义的字符集开头。
例如,给定如下字符串:
this string should not match
bob_1:Hi. I'm Bob. I speak русский and this string should match
alice:Hi Bob. I speak 한국어 and this string should also match
http://example.com - would prefer to not match URLs
This string:should not match because no spaces or capital letters are allowed left of the colon
以上 5 个字符串中只有 2 个需要匹配。并且只在冒号的右边。
Hi. I'm Bob. I speak русский and this string should match
Hi Bob. I speak 한국어 and this string should also match
我目前正在使用 (^[a-z0-9_]+(?=:))
来匹配 :
左侧的字符。我似乎无法扭转逻辑。
我目前最接近的是 (?!(?!:)).+
。这似乎匹配冒号右侧的所有内容以及冒号本身。我只是不知道如何在比赛中不包括 :
。
你们中的哪位正则表达式向导可以帮助我吗?如果有任何不清楚的地方,请告诉我。
您可以使用这个正则表达式:
^[a-z0-9_]+:\K(?!//).*
正则表达式分解:
^
: 开始[a-z0-9_]+
:匹配 1+ 个[a-z0-9_]
个字符:
:匹配冒号\K
: 重置目前匹配的信息(?!//)
:在冒号之后禁止//
的否定前瞻,以避免匹配 潜在 URL.*
: 匹配任何内容直到结束
您可以使用正则表达式:^.*?:(.*)$
^.*?:
- 从行首开始,包括冒号(非贪婪)之前的任何字符
(.*)$
- 使用匹配组匹配它后面的任何内容,直到行尾
短正则表达式模式(不区分大小写):
^\w+:(\w.*)
\w
- 匹配任何单词字符(等于[a-zA-Z0-9_]
)
https://regex101.com/r/MZhqSL/6
正如您标记的 pcre
,这是您需要的模式(仅在冒号右侧):
^\w+:\K\w.*
\K
- 重置报告匹配的起点。任何先前消耗的字符不再包含在最终匹配中