我想从每一行中选择第一个“ - ”:
123 - foo - asdf
234 - bar - abcdefg
345 - foobar and hello world
Run Code Online (Sandbox Code Playgroud)
如果您使用\s-\s它将从前 2 行中选择两个事件。
所以我想要的是这个:
我想要 1 个空格,然后是一个连字符,然后是另一个空格\s-\s,而不仅仅是连字符并将其替换为test,这是第一行:123testfoo - asdf。
我认为您必须添加 a?以使其不贪婪,但我不知道如何。
谢谢。
编辑:这是目标:
我有一个巨大的 ID 和文本文件,我想创建一个 MySQL INSERT 语句。所以我想\s-\s用, '(在那部分)替换第一次出现。
ctw*_*els 10
要匹配每一行的第一次出现,您需要将模式锚定到行的开头。
^([^-]*?)\s*-\s*
Run Code Online (Sandbox Code Playgroud)
^ 在行首断言位置([^-]*?)捕获任意-次数以外的任何字符,但尽可能少地进入捕获组 1\s*-\s*匹配任意数量的空白字符,后跟连-字符,然后是任意数量的空白字符替代品: $1, '
标记$1是对第一个捕获组最近捕获的文本的引用。