基本上,我有以下这些行:
line1:blabla:etcetc
line2:blabla2:etcetc2
line3:blabla3:etcetc3
我需要捕获第一个 “ : ” 符号。这是我现在的正则表达式,但它会捕获所有的 “ : ” 符号。
[(:*?)]
→[(:*?)] 我需要仅捕获第一个“:”,可以使用以下正则表达式:
[:]
[(:*?)]
正则表达式匹配一个符号,它可以是 (
、:
、*
、?
或 )
中的任意一个,因为外部括号形成了一个字符类(或 POSIX 正则表达式中的括号表达式),您可以在其中定义该构造可以匹配的字符或范围,但它将匹配属于集合/范围的 1 个字符。:
可以匹配。^([^:]*):
并替换为 $1\t
。
参见正则表达式演示
详细信息:
^
- 字符串的开头([^:]*)
- 第1组捕获除:
以外的0个或多个字符,使用反向字符类[^:]
(注意我们捕获需要保留的内容):
- 一个字面意义上的:
(注意我们匹配需要替换的内容)替换模式中的$1
是指第1组捕获的值。
^([^:]*):(.*)
-> $1\t$2
。或者甚至需要使用 (?m)
修改器,如果每一行都必须被处理(例如 (?m)^([^:\n]*):(.*)
)。 - Wiktor Stribiżewstr.split(":", 2)
来解决。这将给你两个字符串:第一个:
之前的内容和其余所有的:
。 - LogicalKip
:
? - Wiktor Stribiżew