java – 如何使用正则表达式计算元素相对于另一个元素的位置?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了java – 如何使用正则表达式计算元素相对于另一个元素的位置?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1678字,纯文字阅读大概需要3分钟。
内容图文
![java – 如何使用正则表达式计算元素相对于另一个元素的位置?](/upload/InfoBanner/zyjiaocheng/777/48fc2e1dd2f3458894aa7cec2ad0f624.jpg)
给定字符串
// 1 2 3
String a = "letters.1223434.more_letters";
我想知道在第一个点之后数字位于第二位
然后我想利用这些知识取代“第二位”
// 1 2 3
String b = "someWords.otherwords.morewords";
用“你好”来有效地制作
// 1 2 3
String b = "someWords.hello.morewords";
必须根据String a中匹配元素的原始位置进行替换
如何使用正则表达式来完成?
解决方法:
要查找这些数字,您可以使用组机制(常规表达式中的圆括号):
import java.util.regex.*;
...
String data = "letters.1223434.more_letters";
String pattern="(.+?)\\.(.+?)\\.(.+)";
Matcher m = Pattern.compile(pattern).matcher(data);
if (m.find()) //or while if needed
for (int i = 1; i <= m.groupCount(); i++)
//group 0 == whole String, so I ignore it and start from i=1
System.out.println(i+") [" + m.group(i) + "] start="+m.start(i));
// OUT:
//1) [letters] start=0
//2) [1223434] start=8
//3) [more_letters] start=16
但如果您的目标只是在两个点之间替换文本,请尝试在String对象上使用replaceFirst(String regex,String replacement)方法:
//find ALL characters between 2 dots once and replace them
String a = "letters.1223434abc.more_letters";
a=a.replaceFirst("\\.(.+)\\.", ".hello.");
System.out.println(a);// OUT => letters.hello.more_letters
正则表达式告诉搜索两个点之间的所有字符(包括这些点),因此替换应该是“.hello”. (带点).
如果你的String有更多的点,它将替换第一个和最后一个点之间的所有字符.如果您希望正则表达式搜索满足模式所需的最少字符数,则需要使用Reluctant Quantifier – >?喜欢:
String b = "letters.1223434abc.more_letters.another.dots";
b=b.replaceFirst("\\.(.+?)\\.", ".hello.");//there is "+?" instead of "+"
System.out.println(b);// OUT => letters.hello.more_letters.another.dots
内容总结
以上是互联网集市为您收集整理的java – 如何使用正则表达式计算元素相对于另一个元素的位置?全部内容,希望文章能够帮你解决java – 如何使用正则表达式计算元素相对于另一个元素的位置?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。