Java String 类有一个matches(String regex) 方法来检查当前字符串是否匹配给定的正则表达式。但是,我们如何才能找到当前字符串的子字符串是否匹配正则表达式呢?
我正在尝试使用 Java 模仿 grep 的行为。grep 获取一行并打印与该行中任何位置的给定正则表达式匹配的所有行。我不知道如何用Java 做到这一点,因为matches 方法检查整行(即字符串)是否与正则表达式匹配,而不是其中的任何子字符串。
该Matcher#find()
方法做你想要的
就像 ColinD 说的那样,你最好的办法是一次在你的字符串中读取一行,然后在两端使用一个不情愿的通配符运行你的正则表达式。
您可以修改正则表达式以允许在字符串的前后使用通配符。
所以而不是:
Pattern regex = Pattern.compile("hello\\sworld")
你有
Pattern regex = Pattern.compile(".*hello\\sworld.*);