正则表达式匹配冒号右边的字符

Regex to match characters to the right of a colon

我卡在正则表达式上了。我试图将任何语言中的单词匹配到冒号 的右侧,而不匹配冒号本身

基本规则:

例如,给定如下字符串:

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 个需要匹配。并且只在冒号的右边。

我目前正在使用 (^[a-z0-9_]+(?=:)) 来匹配 : 左侧的字符。我似乎无法扭转逻辑。

我目前最接近的是 (?!(?!:)).+。这似乎匹配冒号右侧的所有内容以及冒号本身。我只是不知道如何在比赛中不包括 :

你们中的哪位正则表达式向导可以帮助我吗?如果有任何不清楚的地方,请告诉我。

您可以使用这个正则表达式:

^[a-z0-9_]+:\K(?!//).*

RegEx Demo

正则表达式分解:

  • ^: 开始
  • [a-z0-9_]+:匹配 1+ 个 [a-z0-9_] 个字符
  • ::匹配冒号
  • \K: 重置目前匹配的信息
  • (?!//):在冒号之后禁止 // 的否定前瞻,以避免匹配 潜在 URL
  • .*: 匹配任何内容直到结束

您可以使用正则表达式:^.*?:(.*)$

^.*?: - 从行首开始,包括冒号(非贪婪)之前的任何字符

(.*)$ - 使用匹配组匹配它后面的任何内容,直到行尾

Link to DEMO

短正则表达式模式(不区分大小写):

^\w+:(\w.*)
  • \w - 匹配任何单词字符(等于 [a-zA-Z0-9_]

https://regex101.com/r/MZhqSL/6


正如您标记的 pcre,这是您需要的模式(仅在冒号右侧):

^\w+:\K\w.*
  • \K - 重置报告匹配的起点。任何先前消耗的字符不再包含在最终匹配中

https://regex101.com/r/E1yHVY/1