繁体   English   中英

如何使用Java正则表达式package.a选择单词的首次出现

[英]How to select the first occurence of a word using java regex package.a

我正在使用java和awt包创建一个记事本。 我面临的一个问题是记事本中的find实用程序。 它选择单词的最后出现。 假设我在文本字段中输入“ go”,然后单击“查找下一个”按钮,并且我在文件中出现了两次出现的单词“ go”,那么它将选择第二次出现,但我希望它选择第一次出现。 这是查找下一个事件的代码。

else if(act=="Find Next")
{   
    String str=t.getText();
    pt=Pattern.compile(t1.getText());
    m=pt.matcher(str.replace("\n", ""));
    while(m.find())
        t.select(m.start(),m.end());
    f.toFront();
}

这是我对其进行测试的文件。

this is sample file just to test the notepad application.
what could possibly go wrong go.

该代码选择第二个出现的“ go”。 有什么可能的解决方案。

为什么在这里使用while循环?

 while(m.find()) t.select(m.start(),m.end()); 

对于每个匹配项,它将选择它。 结果,将选择最后一个。

要选择第一个,请将while更改为if

if (m.find())
    t.select(m.start(),m.end());

要选择一个,您将需要一种跟踪当前位置的方法。 因为“下一个”是一个相对术语,所以您需要从what定义下一个

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM