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。我刚刚添加了一个解释,说明您的正则表达式匹配什么。基本上,如果启用全局匹配,它将匹配集合中的第一个字符或所有字符。如果有人需要像我一样匹配第一个字符,而不是以前的拆分字符,这不允许您替换,下面是在Javastr.split(“:”,2)
中解决此问题的方法。这将为您提供两个字符串:第一个:
前面是什么,其余的字符串与所有其他字符串一起: