【发布时间】:2012-11-29 18:53:06
【问题描述】:
我必须将一行文本分成单词,并且对使用什么正则表达式感到困惑。 我到处寻找一个匹配一个单词的正则表达式,并找到了与这篇文章类似的正则表达式,但在 java 中需要它(java 不处理常规字符串中的 \)。
Regex to match words and those with an apostrophe
我已经为每个答案尝试了正则表达式,但不确定如何为此构建 Java 正则表达式(我假设所有正则表达式都是相同的)。如果在我看到的正则表达式中将 \ 替换为 \,则正则表达式不起作用。
我也尝试过自己查找并来到此页面: http://www.regular-expressions.info/reference.html
但我无法完全理解正则表达式的高级技术。
我正在使用 String.split(regex string here) 来分隔我的字符串。 一个例子是,如果我得到以下信息: “我喜欢吃,但我不喜欢吃每个人的食物,否则他们会饿死。” 我要匹配:
I
like
to
eat
but
I
don't
like
to
eat
everyone's
food
or
they'll
starve
我也不想匹配 '' 或 '''' 或 ' ' 或 '.'' 或其他排列。 我的分隔符条件应该类似于: [匹配任何单词字符][如果撇号前面有单词字符,也匹配撇号,如果有则匹配它后面的单词字符]
我得到的只是一个匹配单词 [\w] 的简单正则表达式,但我不确定如何使用前瞻或后视来匹配撇号,然后匹配剩余的单词。
【问题讨论】:
-
为什么不在空白处分割?
yourString.split("\\s+"); -
@Alex 不是真的,他问的是同一个问题,但用的是不同的语言。 (Python 3.x vs Java)会有不同的答案。
-
@Alex 不,他说他尝试了该问题中的所有答案,但他问的是如何让 Java 正则表达式匹配带有撇号的单词。 Python 和 Java 实现 Regex 的方式不同,因此表达式的调用方式会略有不同。如果有人不熟悉这两种语言,在两者之间翻译正则表达式可能不是直截了当的。例如,并非所有语言都支持 Look-behinds,因此表达式会有所不同。
-
正则表达式 "\\w+('\\w+)*'?"似乎删除了除标点符号等之外的所有单词。我给了它一句话“你好,世界!不要吃别人的三明治。人民”。它给出(由-分隔):“”-”,“-”!“-”“-”“-”“-”。“-”。这似乎正确地选择了分隔符,但我如何让它得到单词?
标签: java regex split word apostrophe