本站消息

站长简介/公众号

  出租广告位,需要合作请联系站长


+关注
已关注

分类  

暂无分类

标签  

暂无标签

日期归档  

暂无数据

java 正则表达式选择直到字符串但不选择子字符串

发布于2024-10-29 18:43     阅读(1044)     评论(0)     点赞(18)     收藏(0)


是否可以匹配某个字符串之前的所有内容,但如果它是另一个字符串的一部分,则忽略它?例如,它应该选择ATA以下字符串之前的所有内容,包括 SATA

anything SATA=1241241. anything ATA=2414121

结果应该是anything SATA=1241241. anything

但如果输入字符串是:

anything  ATA1241241. anything  ATA=2414121

它应该返回anything


解决方案


我确信你想从负面角度看待问题:

^.*(?<!S)ATA

无论不需要的子字符串有多大,它都会起作用。

如果不需要的子字符串恰好是一个字符,则可以使用(更简单的)否定字符类

^.*[^S]ATA

要使用正则表达式提取目标字符串,只需一行:

String part = input.replaceAll("^(.*(?<!S)ATA).*", "$1");

这会将目标捕获为组 1,并通过添加.*消耗剩余的输入,然后用捕获的组替换匹配(即整个输入),从而有效地提取目标。



所属网站分类: 技术文章 > 问答

作者:黑洞官方问答小能手

链接:http://www.javaheidong.com/blog/article/687662/9923f6a4a6ddc3d52d18/

来源:java黑洞网

任何形式的转载都请注明出处,如有侵权 一经发现 必将追究其法律责任

18 0
收藏该文
已收藏

评论内容:(最多支持255个字符)