Notepad++ 正则表达式分组

3

i have the following lines in notepad++

'23123 123123
'23123 123123
'23123 123123
'23123 123123
'23123 123123

我想要替换为

'23123' 123123
'23123' 123123
'23123' 123123
'23123' 123123

我正在进行以下操作

查找内容:     (\d)\s
替换为: $0'

但是它没有起作用


请检查我的答案中的两个解决方案,让我知道哪一个最适合您的情况。 - Wiktor Stribiżew
描述它为什么不工作可以帮助回答者理解你的问题。 - Mark Tolonen
很高兴我的回答对你有用。请考虑给那些对你有帮助的所有答案点赞。 - Wiktor Stribiżew
4个回答

2
您的正则表达式无法工作,因为(\d)\s匹配并捕获数字,然后匹配任何垂直或水平空白,包括换行符。替换是整个匹配和一个'字符。因此,在第二列末尾影响数字块的任何数字+空格序列中,您将附加'
要在行开头的数字块中添加',可以使用:
^'\d+

替换为$0'

详细信息

  • ^ - 行开头锚点
  • ' - 单引号
  • \d+ - 1个或多个数字。

替换内容是整个匹配值($0)和一个 ' (基本上,我们将'附加到每个匹配项)。

enter image description here

一种替代方法是在数字和水平空格之间插入 '
(\d)(\h)

替换为$1'$2。它会在每行的所有非末尾数字块后附加'

enter image description here

详情

  • (\d) - 捕获组1(稍后使用$1占位符引用):一个数字
  • (\h) - 捕获组2(稍后使用$2占位符引用):一个水平空白字符。

0

如果你将所有内容都翻转成 \s(\d) 并用 '$0 替换,则你的正则表达式将起作用。

请注意,在这种情况下,你不需要捕获组,\s\d 也可以工作。

如果必须有一个或多个数字,在你的示例数据中,另一种方法是匹配一个或多个水平空格 \h+,后跟一个或多个数字 \d+,然后用 ' 和整个匹配 $0 进行替换。

查找

\h+\d+

替换为

'$0


0
作为在这种情况下正则表达式的替代方案,Notepad++ 允许列选择。单击第一行中的列并按下 ALT-SHIFT-DOWN ARROW 直到到达底部行。光标将会扩展:

Image of extended cursor

然后输入',它将在所有行中输入。


1
请注意:此解决方案仅在第一列数字的位数保持不变时有效。它还是“手动”的,您不能使用它同时处理多个文件,也无法自动化处理多列值。 - Wiktor Stribiżew
@WiktorStribiżew 让我强调一下替代方案在这种情况下 - Mark Tolonen
我理解,只是我认为如果问题那么简单,OP就不会选择使用正则表达式的方式了。 - Wiktor Stribiżew
@WiktorStribiżew 这些答案不仅仅是给问题提出者的。选择列功能非常有用,但并不总是被广泛知晓。你已经提供了一个答案,这只是一个备选方案(如果相关的话)。 - Mark Tolonen
马克,我非常赞同。这就是为什么我添加了我的置顶评论,以便所有未来的访客都能知道解决方案的限制。这不是给你的评论。 - Wiktor Stribiżew

0

你也可以尝试我的解决方案,如下所示:

搜索:'\d+

替换:$0'

enter image description here


1
它与上面的这个答案有何不同?此外,没有解释的答案完全没有用。 - Toto

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接