处理前导空格的正则表达式(记事本++)

Regex to handle leading spaces (notepad++)

我在记事本++打开的文件中有一行

  0 <? 0.00 - (multi) Salt

注意:行首有 2 个前导 space。

只有一个 中使用正则表达式替换,我必须将上面的行更改为:

0,0.00,multi,Salt   

我试过的是:替换

  ( \d*) <\? \d.\d\d - \(multi\) *

,,multi,

它工作正常。唯一的问题是它在 notepad++

的每一行添加了一个前导 space

如何修改我的正则表达式以不在每行的开头添加前导 space?

注意L我不能使用"Trim Leading space in notepad"的选项。

有人可以帮我解决这个问题吗?

提前致谢!

注意:我的文件有更多行,如

  0 <? 0.00 - (multi) Salt  
  1 <? 0.00 - (multi) Vinegar   
  2 <? 0.00 - (multi) Salt and Vinegar  
  3 <? 0.00 - (multi) BBQ Sauce 
  4 <? 0.00 - (multi) Chilli Sauce  
  5 <? 0.00 - (multi) Hawaiian Sauce    
  6 <? 0.00 - (multi) Brown Sauce   
  7 <? 0.00 - (multi) Garlic Mayo and Herb Sauce    
  8 <? 0.00 - (multi) Mayo  
  9 <? 0.00 - (multi) Salad 
  10 <? 0.00 - (multi) Lettuce  
  11 <? 0.00 - (multi) Cabbage  

"  ( \d*) <\? \d.\d\d - \(multi\) *" 

您的正则表达式在第一组中有一个 space:( \d*)。去掉它就没事了:(\d*)。但是,(无关)你还没有捕获你的第二组,也没有 Salt

要在 Notepad++ 中使用基于正则表达式的替换,请打开查找和替换底部的 正则表达式 单选按钮 window !(见下面我的设置)

这是一个对你有用的正则表达式:

^\h{2}(\d*)\h*<\?\h*(\d\.\d{2})\h*-\h*\(multi\)\h*

替换为,,multi,

\h 是一个水平空格(排除换行符)。两次出现可以与 {2} 限制量词匹配(无需重复子模式)。

查看设置:

注意:如果前导空格超过 1 个,请将 \h{2} 更改为 \h{2,}:

^\h{2,}(\d*)\h*<\?\h*(\d\.\d{2})\h*-\h*\(multi\)\h*

^\h+(\d+)\h*<\?\h*([\d.]+)\W+(\w+)\W+([\w\h]+?)\h*$看到了here.

要在我的编辑器中捕获四个组中的所有内容

查找内容:\s\s(\d+).+(\d[.]\d+).+\((\w+).*?(\w+\b)
替换为:,,,

见下面所附照片..