Java 在行首拆分字符串

Java 在行首拆分字符串,java,regex,Java,Regex,我有一个文本,每当我在网站上遇到“单词”时,我就想拆分它 一行的开头,后面没有字符。我曾经 split(“WORD”),只是它不好,因为例如%hi-hi-WORD不应该通过split方法进行匹配,而现在它是匹配的。 我尝试使用“^WORD”,但它只与全文开头的WORD匹配 你知道我该怎么做吗? 顺便说一句,如果这很重要的话,我会使用java(这与正则表达式模式的模式具有相同的效果。多行标志): 它将^的含义从“字符串开头”更改为“行开头”。使用(其效果与模式相同。多行标志用于正则表达式模式):

我有一个文本,每当我在网站上遇到“单词”时,我就想拆分它 一行的开头,后面没有字符。我曾经 split(“WORD”),只是它不好,因为例如%hi-hi-WORD不应该通过split方法进行匹配,而现在它是匹配的。 我尝试使用“^WORD”,但它只与全文开头的WORD匹配

你知道我该怎么做吗? 顺便说一句,如果这很重要的话,我会使用java(这与正则表达式模式的
模式具有相同的效果。多行
标志):

它将
^
的含义从“字符串开头”更改为“行开头”。

使用(其效果与
模式相同。多行
标志用于正则表达式模式):


它将
^
的含义从“在字符串的开头”更改为“在行的开头”。

如Tomalak所述,请使用多行修饰符。如果你想保留单词本身,你也可以这样做:

Pattern p = Pattern.compile("(^WORD .*$)", Pattern.MULTILINE);
String input = "WORD something. And WORD not at beginning.\nWORD something.";
Matcher m = p.matcher(input);
while (m.find()) {
   System.out.println(m.group());
}

正如Tomalak所发布的,使用多行修改器。如果你想保留单词本身,你也可以这样做:

Pattern p = Pattern.compile("(^WORD .*$)", Pattern.MULTILINE);
String input = "WORD something. And WORD not at beginning.\nWORD something.";
Matcher m = p.matcher(input);
while (m.find()) {
   System.out.println(m.group());
}
在行首遇到“单词”且后面没有字符

text.split((?mis)^WORD(?)

在行首遇到“WORD”,且其后没有字符


text.split((?mis)^WORD(?)

您能发布示例输入文本吗?您的意思是,如果您在一行中看到单词本身,您希望按单词进行拆分(即前面没有字符,因为它位于开头,后面也没有字符)?或者按单词拆分,除非它出现在文件末尾的行中(后面没有字符)?或者你想被别的东西分开?我很困惑。就像你说的,当它自己在一行上时,你能发布示例输入文本吗?你的意思是,如果你看到一行上的单词都是自己的话,你想按单词分割(也就是说,前面没有字符,因为它在开头,后面也没有字符)?或者按单词拆分,除非它出现在文件末尾的行中(后面没有字符)?或者你想被别的东西分开?我很困惑。就像你说的,当它在一条线上的时候itself@Tomalakyot并没有精确说明单词是否总是大写。我想要点匹配任何字符。使用
s
修饰符,
(?!)
意味着没有字符跟在这一点后面,甚至连换行符都没有。换句话说,它匹配字符串的最末端,就像
\z
@Tomalak yot不确定单词是否总是大写一样。我想要点匹配任何字符。使用
s
修饰符,
(?!)
意味着没有字符跟在这一点后面,甚至连换行符都没有。换句话说,它匹配字符串的最末端,与
\z
.hi完全相同。这对我不起作用。例如,我仍然匹配sdfsdWORD。这个问题仍然不是很清楚,但我认为你也需要结尾的
$
锚。@Alan:可能吧。在任何情况下,它都不会匹配
“sdfsdWORD”
,因此我不太确定OP在做什么。这对我不起作用。例如,我仍然匹配sdfsdWORD。这个问题仍然不是很清楚,但我认为你也需要结尾的
$
锚。@Alan:可能吧。在任何情况下,它都不匹配
“sdfsdWORD”
,因此我不确定OP在做什么。