Java 正则表达式
有人能帮我在java正则表达式中完成以下操作吗 我需要从给定字符串的第5个位置读取3个字符,忽略之前和之后发现的内容 示例:Java 正则表达式,java,regex,Java,Regex,有人能帮我在java正则表达式中完成以下操作吗 我需要从给定字符串的第5个位置读取3个字符,忽略之前和之后发现的内容 示例:testXXXtest 预期结果:XXX您根本不需要正则表达式 只需使用子字符串:yourString.substring(4,7) 由于您确实需要使用正则表达式,您可以这样做: Pattern pattern = Pattern.compile(".{4}(.{3}).*"); Matcher matcher = pattern.matcher("testXXXtest"
testXXXtest
预期结果:XXX
您根本不需要正则表达式
只需使用子字符串:yourString.substring(4,7)
由于您确实需要使用正则表达式,您可以这样做:
Pattern pattern = Pattern.compile(".{4}(.{3}).*");
Matcher matcher = pattern.matcher("testXXXtest");
matcher.matches();
String whatYouNeed = matcher.group(1);
这是什么意思,一步一步:
{4}
-任意四个字符
(
-开始捕获组,即您需要的组
{3}
-任意三个字符
)
-结束捕获组,现在就可以了
*
后跟0个或更多任意字符
matcher.group(1)
-获取第一个(唯一)捕获组 您应该能够使用该方法来完成此任务:
string example = "testXXXtest";
string result = example.substring(4,7);
这可能会有所帮助:
以下是一个例子:
import java.util.regex.Pattern;
import java.util.regex.Matcher;
public class Example {
public static void main(String[] args) {
String text = "This is a testWithSomeDataInBetweentest.";
Pattern p = Pattern.compile("test([A-Za-z0-9]*)test");
Matcher m = p.matcher(text);
if (m.find()) {
System.out.println("Matched: " + m.group(1));
} else {
System.out.println("No match.");
}
}
}
这张照片是:
Matched: WithSomeDataInBetween
如果您不想将整个模式匹配到输入字符串(而不是寻找匹配的子字符串),可以使用matches()
而不是find()
。您可以使用find()
继续在后续调用中搜索更多匹配的子字符串
另外,您的问题并没有指定两个“测试”字符串之间的允许字符和字符串长度。我假设任何长度都可以,包括零,我们寻找一个由小写字母和大写字母以及数字组成的子字符串。你可以使用子字符串,你不需要正则表达式
yourString.substring(4,7);
我相信你也可以使用正则表达式,但如果你不需要它,为什么呢。当然,您应该保护此代码不受null和太短字符串的影响。使用String.replaceAll()类方法 如果不需要对性能进行优化,可以尝试使用String.replaceAll()类方法获得更简洁的选项:
String sDataLine = "testXXXtest";
String sWhatYouNeed = sDataLine.replaceAll( ".{4}(.{3}).*", "$1" );
参考资料