Regex 当多个空格带有正则表达式时,用分号替换空格
我试了大约两个小时,我不确定我想做的是否有效 我有一个大文件,里面有一些数据Regex 当多个空格带有正则表达式时,用分号替换空格,regex,Regex,我试了大约两个小时,我不确定我想做的是否有效 我有一个大文件,里面有一些数据 43034452 LONGSHIRTPAIETTE 17.30 27.90 0110 COL
43034452 LONGSHIRTPAIETTE 17.30
27.90
0110
COLOR : : : : :
: : :
-11 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43034453 LONG SHIRT PAI ETTE 16.40
25.90
0110
COLOR : : : : :
: : :
-3 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
43034454 BASIC 4.99
8.90
0110
COLOR : : : : :
: : :
-5 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
(该文件有36k行。)
我想做的是把这整件事弄干净
最后,这些行应该如下所示
43034452;LONGSHIRTPAIETTE;17.30;27.90;0110
43034453;LONG SHIRT PAI ETTE;16.40;25.90;0110
43034454;BASIC;4.99;8.90;0110
所以有很多我不需要的数据。我正在用记事本++做正则表达式
我的正则表达式字符串现在看起来像([0-9]*)\s{6,}([A-Z]*)\s*([0-9\.]*))\s*([0-9\.]*))\s*([0-9]*)
这给我带来了第一个数字,后面是6个空格。(必须是这样,因为有些行以FF
开头,FF
不是字母。这是一种我无法识别的符号,但如果我让记事本++显示我看到的所有符号,FF
)
因此,我得到了
\1: 43034452
\2: LONGSHIRTPAIETTE
\3: 17.30
\4: 27.90
\5: 0110
和预期的一样,但在下一行它会停在空格上。如果我将\s
添加到模式中,那么它也会选择单词part后面的所有空格。我显然不能说“只有一个空间”,对吗
所以我的问题是,我能用正则表达式得到我想要的选择吗
如果是,我做错了什么?使用下面的正则表达式
([0-9]*)\s{6,}([A-Z]+(?:\s+[A-Z]+)*)\s*([0-9\.]*)\s*([0-9\.]*)\s*([0-9]*).*?(?=\n\S|$)
然后将匹配项替换为\1\2;\3;\4;\5
不要忘记启用点调用修改器s
使用下面的正则表达式
([0-9]*)\s{6,}([A-Z]+(?:\s+[A-Z]+)*)\s*([0-9\.]*)\s*([0-9\.]*)\s*([0-9]*).*?(?=\n\S|$)
然后将匹配项替换为\1\2;\3;\4;\5
不要忘记启用点调用修改器s
使用下面的正则表达式
([0-9]*)\s{6,}([A-Z]+(?:\s+[A-Z]+)*)\s*([0-9\.]*)\s*([0-9\.]*)\s*([0-9]*).*?(?=\n\S|$)
然后将匹配项替换为\1\2;\3;\4;\5
不要忘记启用点调用修改器s
使用下面的正则表达式
([0-9]*)\s{6,}([A-Z]+(?:\s+[A-Z]+)*)\s*([0-9\.]*)\s*([0-9\.]*)\s*([0-9]*).*?(?=\n\S|$)
然后将匹配项替换为\1\2;\3;\4;\5
不要忘记启用点调用修改器s
试试这个:
([0-9]+)\s{6,}((?:[A-Z]+\ )+)\s*([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)
请注意以下几点:
- 在适当的情况下,将
压缩为*
,因此在这些列中强制使用一些字符或实际的空格+
- 用一个字母重复一个单词的一个或多个实例,然后再重复一个空格
([0-9]+)\s{6,}((?:[A-Z]+\ )+)\s*([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)
请注意以下几点:
- 在适当的情况下,将
压缩为*
,因此在这些列中强制使用一些字符或实际的空格+
- 用一个字母重复一个单词的一个或多个实例,然后再重复一个空格
([0-9]+)\s{6,}((?:[A-Z]+\ )+)\s*([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)
请注意以下几点:
- 在适当的情况下,将
压缩为*
,因此在这些列中强制使用一些字符或实际的空格+
- 用一个字母重复一个单词的一个或多个实例,然后再重复一个空格
([0-9]+)\s{6,}((?:[A-Z]+\ )+)\s*([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)
请注意以下几点:
- 在适当的情况下,将
压缩为*
,因此在这些列中强制使用一些字符或实际的空格+
- 用一个字母重复一个单词的一个或多个实例,然后再重复一个空格
- 你的方法是正确的。。只需在正则表达式中将
*
替换为+
(多个)
/([0-9]+)\s{6,}([A-Z ]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)/g
请参阅。您的方法是正确的。。只需在正则表达式中将
*
替换为+
(多个)
/([0-9]+)\s{6,}([A-Z ]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)/g
请参阅。您的方法是正确的。。只需在正则表达式中将
*
替换为+
(多个)
/([0-9]+)\s{6,}([A-Z ]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)/g
请参阅。您的方法是正确的。。只需在正则表达式中将
*
替换为+
(多个)
/([0-9]+)\s{6,}([A-Z ]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)/g
请参阅。这似乎可以在线使用,但在记事本++中不起作用。如果我使用这一个,它会跳过很多行,而不是只跳过两行和更多行……请检查更新的正则表达式。。我在
([A-Z]+)
中漏掉了空格,实际上还可以,但是最后一个单词末尾的空格没有切掉。你能检查一下吗<代码>([0-9]+)\s{6,}([A-Z]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)(?=\s)这应该在最后一个单词之后给你零个空格。同样的结果:)巴特,我接受了尼克的回答。这对我帮助最大。感谢您的尝试:)这似乎在线工作,但在记事本++中不起作用。如果我使用这一个,它会跳过很多行,而不是只跳过两行,然后再跳过一些行……请检查更新的正则表达式。。我在([A-Z]+)
中漏掉了空格,实际上还可以,但是最后一个单词末尾的空格没有切掉。你能检查一下吗<代码>([0-9]+)\s{6,}([A-Z]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)(?=\s)这应该在最后一个单词之后给你零个空格。同样的结果:)巴特,我接受了尼克的回答。这对我帮助最大。感谢您的尝试:)这似乎在线工作,但在记事本++中不起作用。如果我使用这一个,它会跳过很多行,而不是只跳过两行,然后再跳过一些行……请检查更新的正则表达式。。我在([A-Z]+)
中漏掉了空格,实际上还可以,但是最后一个单词末尾的空格没有切掉。你能检查一下吗<代码>([0-9]+)\s{6,}([A-Z]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)(?=\s)这应该在最后一个单词之后给你零个空格。同样的结果:)巴特,我接受了尼克的回答。这对我帮助最大。感谢您的尝试:)这似乎在线工作,但在记事本++中不起作用。如果我使用这一个,它会跳过很多行,而不是只跳过两行,然后再跳过一些行……请检查更新的正则表达式。。我在([A-Z]+)
中漏掉了空格,实际上还可以,但是最后一个单词末尾的空格没有切掉。你能检查一下吗<代码>([0-9]+)\s{6,}([A-Z]+)\s+([0-9\.]+)\s+([0-9\.]+)\s+([0-9]+)(?=\s)这应该在最后一个单词之后给你零个空格。同样的结果:)巴特,我接受了尼克的回答。这对我帮助最大。感谢您的尝试:)此图案也与颜色匹配的行。实际上这很好,因为最后一个单词后面的空格被切掉了,但是选择了很多行,但是它给了你预期的输出。。。因为如果我用semiko替换数据