我目前正在我的Java类中执行一个项目,该项目涉及扫描文本文件,然后用java正则表达式打破每一行。文本文件中其中一行的示例如下所示:
我一直试图打破这个问题,这样我就可以得到像“超液体漂白剂”和“山地新鲜”这样的词语,而不是中间的白色空间。我目前的代码是:
([\\w]+|[ ]?)\\b
我无法得到更远的东西。前两个单词的单词数量不同,因此任何针对特定数量单词的表达都不起作用。我是在正确的轨道上还是有更好的方式来做我想做的事情?
答案 0 :(得分:0)
您使用了图片而不是为我们提供基于文本的示例,但这应该适用于您假设"单词短语"总是被3个以上的空格隔开,你永远不会想到个人的短语或3个以上的空格"单词短语"
post_max_size = 1M
file_uploads = On
max_file_uploads = 1
memory_limit = 40M
upload_max_filesize = 1M
Disinfecting Wipes Lemon Fresh 35 pkg 3.39
Ultra Liquid Bleach Mountain Fresh 96 oz 2.39
FF & LS Broth Chicken 32 oz 2.99
说明(另见:more detail and output of run against assumed input):
\b(\S+(?: ?\S+)*)\b
:字边界(字词char(\b
)和非字char(\w
之间的零宽度标记)\W
:匹配组从此处开始
(
:一个或多个非空格字符\S+
:非匹配组从此处开始
(?:
:一个文字空间,然后是0或1个文字空间 ?
:一个或多个非空格字符\S+
:此非匹配组可能出现零次或多次)*
:匹配组的结尾)
:字边界