Regex 正则表达式只匹配第一个字符

Regex 正则表达式只匹配第一个字符,regex,match,capture,Regex,Match,Capture,所以基本上我有以下几行: line1:blabla:etcetc line2:blabla2:etcetc2 line3:blabla3:etcetc3 我只需要捕获第一个“:”。这是我现在的正则表达式,但它捕获了所有的“:” [(:*?)]请注意,[(:*?)]正则表达式匹配一个符号,该符号是(,或:,*,?,或),因为外部括号构成了一个字符类(或POSIX正则表达式中的括号表达式),您可以在其中定义此结构可以匹配的字符或其范围,但它将匹配属于集合/范围的1个字符 第一个:可以与 ^([^:

所以基本上我有以下几行:

line1:blabla:etcetc
line2:blabla2:etcetc2
line3:blabla3:etcetc3
我只需要捕获第一个“:”。这是我现在的正则表达式,但它捕获了所有的“:”

[(:*?)]

请注意,
[(:*?)]
正则表达式匹配一个符号,该符号是
,或
*
,或
,因为外部括号构成了一个字符类(或POSIX正则表达式中的括号表达式),您可以在其中定义此结构可以匹配的字符或其范围,但它将匹配属于集合/范围的1个字符

第一个
可以与

^([^:]*):
并替换为
$1\t

详细信息

  • ^
    -字符串的开头
  • ([^:]*)
    -第1组捕获0多个字符,而不是使用未选字符类
    [^:]
    (注意,我们捕获了需要保留的字符)
  • -文字
    (注意,我们匹配需要替换的内容)

替换模式中的
$1
指的是组1中捕获的值。

第一个
将如何处理:
?我需要将其替换为\t您使用的语言/工具?每一行是一个单独的字符串,还是都包含在一个字符串中?非常感谢您的回答!请注意,根据工具/语言/方法的不同,它可能需要
^([^:]*):(.*)
->
$1\t$2
。如果必须处理每一行,甚至可以使用
(?m)
修饰符(如
(?m)^([^:\n]*):(.*)
)。感谢您提供的信息$1\t工作正常。我正在为此使用emeditor。我刚刚添加了一个解释,说明您的正则表达式匹配什么。基本上,如果启用全局匹配,它将匹配集合中的第一个字符或所有字符。如果有人需要像我一样匹配第一个字符,而不是以前的拆分字符,这不允许您替换,下面是在Java
str.split(“:”,2)
中解决此问题的方法。这将为您提供两个字符串:第一个
前面是什么,其余的字符串与所有其他字符串一起