Regex 正则表达式以匹配冒号右侧的字符

Regex 正则表达式以匹配冒号右侧的字符,regex,pcre,Regex,Pcre,我被正则表达式卡住了。我试图将任何语言中的单词匹配到冒号的右侧,而不匹配冒号本身 基本规则: 要使一行有效,在:之后,该行不得以[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

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

基本规则:

  • 要使一行有效,在
    之后,该行不得以
    [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个需要匹配。只在结肠的右边

  • 你好。我是鲍勃。我说的是БССц,这个字符串应该匹配

  • 你好,鲍勃。我说한국어 此字符串也应匹配

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

目前我最接近的是
(?!(?!:)。+
。这似乎与冒号右边的所有内容以及冒号本身都匹配。我就是想不出如何在比赛中不包括


你们中的一个正则表达式向导能帮我吗?如果有什么不清楚的地方,请告诉我

您可以使用此正则表达式:

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

正则表达式分解:

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

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

^.*?:
-从行首开始,直到冒号(非贪婪)为止的任何字符都包括在内

(.*)$
-将匹配组用于其后的任何内容,直到行尾

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

  • \w
    -匹配任何单词字符(等于
    [a-zA-Z0-9\


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

  • \K
    -重置报告匹配的起点。任何以前使用的字符将不再包含在最终匹配中

我试图不匹配冒号。只有它右边的字符。然后你可以使用:
^[a-z0-9+:\K(?!/).
还记得
\w
也会匹配你写的不想匹配的大写字母。我正在尝试匹配冒号右边的字符,而不匹配冒号本身。@I0\u ol,查看我的
pcre
模式,这正是我需要的。非常感谢。
^\w+:(\w.*)
^\w+:\K\w.*