首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用regex lookahead的Java拆分-字符后面不跟字符

是一种通过正则表达式的先行断言(lookahead)来实现的字符串拆分方法。先行断言是一种零宽度的匹配,它用于在匹配字符串时,判断某个位置的后面是否满足特定的条件。

在Java中,可以使用正则表达式的split()方法来实现这种拆分。具体的正则表达式可以使用先行断言来匹配字符后面不跟字符的情况。

以下是一个示例代码:

代码语言:java
复制
String input = "使用regex lookahead的Java拆分-字符后面不跟字符";
String[] parts = input.split("(?<=-)(?!-)");

在上述代码中,正则表达式(?<=-)(?!-)使用了先行断言来匹配字符后面不跟字符的情况。具体解释如下:

  • (?<=-)表示匹配前面是-的位置,即字符后面是-
  • (?!-)表示匹配后面不是-的位置,即字符后面不跟字符。

通过将这个正则表达式作为参数传递给split()方法,可以实现按照字符后面不跟字符的位置进行拆分。

对于上述示例,拆分结果为:

代码语言:txt
复制
使用regex lookahead的Java拆分
字符后面不跟字符

这种拆分方法适用于需要按照某个字符后面不跟字符的位置进行拆分的场景,例如处理特定格式的文本或日志文件等。

腾讯云相关产品和产品介绍链接地址:

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

java字符拆分_Java字符串分割 .

Java我们可以利用split把字符串按照指定分割符进行分割,然后返回字符串数组,下面是string.split用法实例及注意事项: java.lang.string.split split 方法...要被分解 String 对象或文字,该对象不会被split方法修改。 separator 可选项。字符串或正则表达式对象,它标识了分隔字符串时使用是一个还是多个字符。...作为连字符,比如:String str=”Java string-split#test”,可以用Str.split(” |-|#”)把每个字符串分开; 使用String.split方法时要注意问题 在使用...参数regex是一个 regular-expression匹配模式而不是一个简单String,他对一些特殊字符可能会出现你预想不到结果,比如测试下面的代码: 用竖线 | 分隔字符串,你将得不到预期结果...* 分隔字符串运行将抛出java.util.regex.PatternSyntaxException异常,用加号 + 也是如此。

3.7K10

java——split用法(字符拆分

字符拆分 public static void main(String[] args) { String str = "I Live In The Home"; String...:" + str); //System.out.println(Arrays.toString(ret)); } 输出结果为: 从这里可以看到,本代码是用空格拆分字符串...,但是最开始字符串不会因为字符分割而改变(String定义字符串不会被修改) 注意: 这里要引出一个概念:正则表达式 就比如下面的例子: public static void main...里面有两个反斜杠,代表两个转义, 一个是在java中进行转义,一个是在正则中表示转义 与之用法相同符号有:“| + * ” 实际应用 public static void main(String...//现在已经按照&拆分好了,开始进行=拆分 String[] ret = tmp.split("="); if (ret.length !

2K40

讲给前端正则表达式(4):避免灾难性回溯

经过了大量计算,但是没有找到匹配结果。这可能会导致性能大幅下降。如果使用非常长字符串,浏览器可能会挂起,从而破坏用户体验。...上面的解决方案并不总是很容易,而且有可能会造成很大痛苦。解决上述问题方法是使用先行断言(lookahead)。 在最基本形式中,它声明 x 仅会在其后跟随 y 时才匹配。...仅当 x 后面不跟随 y 时,用负向先行断言匹配 x const expression = /x(?!...我们还讨论了量词可能导致另一个问题:灾难性回溯。我们还学习了如何使用 先行断言(lookahead) 来改善性能,而不仅仅是去重写表达式。...原文:https://wanago.io/2019/09/23/regex-course-part-four-avoiding-catastrophic-backtracking-using-lookahead

55720

Java转换流_java字符使用什么编码

)主要进行编码转换,用来解决字符流读写乱码问题 2 工具API学习 OutputStreamWriter : OutputStreamWriter(OutputStream out)把传入字节流转成字符流.... encoding 创建类: TestEncode.java package cn.tedu.encoding; import java.io.*; /*本类用于测试编码转换流*/ public class...,"utf-8"); //new FileInputStream("1.txt"),"gbk"); //new FileInputStream("1.txt"),"iso-8859-1"); //4.使用流读取数据...(in.read()); //拓展:将刚刚读到数据,以中文格式展示在控制台 char[] ch = new char[8192]; //Reader中方法:read(char[] cbuf)将字符读入数组...,返回读取到字符个数 int len = in.read(ch);//len保存是读取到字符个数 //此处是String构造函数,利用ch数组中数据,构建一个字符串,并打印到控制台 System.out.println

81120

(转)java正则表达式(二)

Back 引用 是说在后面的表达式中我们可以使用编号来引用前面的表达式所捕获到文本序列(是文本不是正则)。....* \1 其中使用了分组,\1就是对引号这个分组引用,它匹配包含在两个引号或者两个单引号中所有字符串,如,"abc" 或 " ' " 或 ' " ' ,但是请注意,它并不会对" a'或者 '...在Java中,支持非捕获组,有如下几种: (?=X) X,通过零宽度lookahead 即左侧匹配 (?!X) X,通过零宽度lookahead 即左侧匹配 (?...仅当子表达式 X 不在 此位置右侧匹配时才继续匹配。例如,例如,\w+(?!\d) 与后不跟数字单词匹配,而不与该数字匹配。 (?<=X) 零宽度正后发断言。...仅当子表达式 X 不在此位置左侧匹配时才继续匹配。例如,(?<!19)99 与不跟在 19 后面的 99 实例匹配 说明: 非捕获组中四个表达式区别: (?=X ) 和(?!

70620

正则表达式入门

否定字符类 一般来说表示一个字符开头,但当它用在方括号里面的时候,表示否定关系。比如[ar]匹配一个后面跟着ar除了c任意字符。 ?...这些特殊字符.如果想要匹配这些特殊字符则要在其前面加上反斜线 . 3.8 边界 字符 含义 ^ 以^后面字符开头 $ 以 $前面的字符结尾 \b 单词边界,指[a-zA-Z0-9]之外字符 \B...零宽度断言(前后预查) 正则表达式中有前瞻(Lookahead)和后顾(Lookbehind)概念,这两个术语非常形象描述了正则引擎匹配行为。...\sfat) 匹配 The 和 the, 且其后不跟着(空格)fat. ? 6.3 正向后顾 定义一个正向后顾要使用(),在括号内部使用一个问好、小于号和等号?...用于筛选所有匹配结果, 筛选条件为 其前不跟随着断言中定义格式. 例如, 表达式 (?<!(T|t)he\s)(cat) 匹配 cat, 且其前不跟着 The 或 the. ?

87020

一文带你读懂:Google 和 JDK 正则表达式引擎有何不同

,能够正常去匹配字符串,但是在我们系统中却抛出异常信息,如下: 不同引擎使用差异 于是我这边进行问题定位,发现是底层使用了 Google Re2j 正则表达式引擎,代码段如下: public...JDK Regex 正则表达式引擎 Java 标准正则表达式包java.util.regex,以及许多其他广泛使用正则表达式包,如 PCRE、Perl 和 Python,都使用回溯实现策略:当一个模式呈现两个备选方案...应用层 java.util.regex 包主要包括以下三个类: Pattern 类: pattern 对象是一个正则表达式编译表示。Pattern 类没有公共构造方法。...回溯实现策略 回溯法,又称试探法,是常用,基本优选搜索方法。常用于解决这一类问题:给定一定约束条件 F(该约束条件常用于后面的剪枝)下求问题一个解或者所有解。...在最坏情况下,java.util.regex匹配器可能永远运行,或者超过可用堆栈空间而失败;这在 RE2/J 中永远不会发生。

1.3K30

资源 | 正则表达式功法大全

其中一个比较有意思地方是,只要我们学会了正则表达式语句,我们几乎可以将其应用于多有的编程语言,包括 JavaScript、Python、Ruby 和 Java 等。...匹配在“ab”后面跟着零个或一个“c”字符串 abc{2} 匹配在“ab”后面跟着两个“c”字符串 abc{2,} 匹配在“ab”后面跟着两个或更多“c”字符串 abc{2,5}...匹配在“ab”后面跟着2到5个“c”字符串 a(bc)* 匹配在“a”后面跟着零个或更多“bc”序列字符串 a(bc){2,5} 匹配在“a”后面跟着2到5个“bc”序列字符串...(https://regex101.com/r/cO8lqs/3) a[bc] 匹配在“a”后面跟着“b”或“c”字符字符类:d、d、s 和 . d 匹配数字型单个字符...r) 只有在后面不跟着“r”时候才匹配“d”,但是“r”并不会成为整个正则表达式匹配一部分 -> Try it!

1.6K40

java 日期格式化– SimpleDateFormat 使用字符串转日期,日期转字符

在 日期和时间模式字符串 中,未加引号字母 ‘A’ 到 ‘Z’ 和 ‘a’ 到 ‘z’ 被解释为模式字母,用来表示日期或时间字符串元素。文本可以使用单引号 (‘) 引起来,以免进行解释。...所有其他字符均不解释;只是在格式化时将它们简单复制到输出字符串 白话文讲:这些A——Z,a——z这些字母(不被单引号包围)会被特殊处理替换为对应日期时间,其他字符串还是原样输出。...z:表示时区 (2017-12-28日,更新) 因为看到了Java 8 里面对日期格式化操作API,回头又看了看这个以前日期格式化。发现,文中实例不是很全面。...,不靠谱,具体我就在这多做测试啦,我是测试过,才这么说,还是后面的那个 W 靠谱。...(更新完成) 具体简单常见实例: package com.lxk.DateFormat; import java.text.SimpleDateFormat; import java.util.Date

4.5K20

资源 | 正则表达式功法大全,做NLP再也不怕搞不定字符串了

其中一个比较有意思地方是,只要我们学会了正则表达式语句,我们几乎可以将其应用于多有的编程语言,包括 JavaScript、Python、Ruby 和 Java 等。...匹配在“ab”后面跟着零个或一个“c”字符串 abc{2} 匹配在“ab”后面跟着两个“c”字符串 abc{2,} 匹配在“ab”后面跟着两个或更多“c”字符串 abc{2,5}...匹配在“ab”后面跟着2到5个“c”字符串 a(bc)* 匹配在“a”后面跟着零个或更多“bc”序列字符串 a(bc){2,5} 匹配在“a”后面跟着2到5个“bc”序列字符串...(https://regex101.com/r/cO8lqs/3) a[bc] 匹配在“a”后面跟着“b”或“c”字符字符类:\d、\d、\s 和 ....r) 只有在后面不跟着“r”时候才匹配“d”,但是“r”并不会成为整个正则表达式匹配一部分 -> Try it!

1.5K80

正则表达式【Pattern 】

=X)X,通过零宽度lookahead (?!X)X,通过零宽度lookahead (?<=X)X,通过零宽度正 lookbehind (?...在不表示转义构造任何字母字符使用反斜线都是错误;它们是为将来扩展正则表达式语言保留。可以在非字母字符使用反斜线,不管该字符是否非转义构造一部分。...根据 Java Language Specification 要求,Java 源代码字符串中反斜线被解释为 Unicode 转义或其他字符转义。...因此必须在字符串字面值中使用两个反斜线,表示正则表达式受到保护,不被 Java 字节码编译器解释。...以下代码被识别为行结束符: 新行(换行)符 ('\n')、 后面紧跟新行符回车符 ("\r\n")、 单独回车符 ('\r')、 下一行字符 ('\u0085')、 行分隔符 ('\u2028')

45840

恭喜你,Get到一份 正则表达式 食用指南

Java中正则表达式使用 字符串内置正则 在 Java 中有四个内置运行正则表达式方法,分别是 matches()、split())、replaceFirst()、replaceAll()。...Javaregex使用正则表达式基本步骤 通过正则表达式创建模式对象 Pattern。 通过模式对象 Pattern,根据指定字符串创建匹配对象 Matcher。...或 {} 后面的第一个字符,那么表示非贪婪模式(尽可能少匹配字符),而不是默认贪婪模式 分组和反向引用 小括号 () 可以达到对正则表达式进行分组效果。...反向引用会保存匹配模式分组字符串片断,这使得我们可以获取并使用这个字符串片断。...否定先行断言(Negative lookahead) 我们可以创建否定先行断言模式匹配,即某个字符后面不包含另一个字符匹配模式。 否定先行断言模式通过 (?!pattern) 定义。

59610

shell 正则表达式

正则表达式 grep支持BREs,EREs,PREs grep后面不跟任何参数,则表示使用BREs grep后面跟-E参数,则表示使用EREs grep后面跟-P参数,则表示使用PREs egrep支持...EREs,PREs egrep后面不跟任何参数,则表示使用EREs egrep后面跟-P,则表示使用PREs grep,egrep作用 查找文本 按行处理 sed正则表达式 sed支持BREs,EREs...sed默认支持就是BREs sed后面跟-r表示使用EREs sed作用 对文本内容进行,查找,替换,删除,增加 按行处理 awk正则表达式 awk支持EREs awk默认就是使用EREs awk...作用 awk处理文本文件 按列进行操作 三种不同类型表达式比较 当使用 BERs(基本正则表达式)时,必须在下列这些符号前加上转义字符('\'),屏蔽掉它们 speical meaning “?...,+,|,{,},(,)” 这些字符,需要加入转义符号”\” 修饰符用在正则表达式结尾,例如:/dog/i,其中 “ i “ 就是修饰符,它代表含义就是:匹配时不区分大小写,那么修饰符有哪些呢?

1.5K00

JAVA字符串格式化——String.format()使用

引言 String类format()方法用于创建格式化字符串以及连接多个字符串对象。熟悉C语言应该记得C语言sprintf()方法,两者有类似之处。format()方法有两种重载形式。...重载 // 使用当前本地区域对象(Locale.getDefault()),制定字符串格式和参数生成格式化字符串 String String.format(String fmt, Object......args); // 自定义本地区域对象,制定字符串格式和参数生成格式化字符串 String String.format(Locale locale, String fmt, Object... args...下面的[]符号里面都是选择性项目,因此只有%与type是必要. 格式化说明顺序是有规定,必须要以这个顺序章指定. ? 实例: ?...超过一项以上参数时 把新参数加到后面,因此会有3个参数来调用format()而不是两个,并且在第一个参数中,也就是格式化串中,会有两个不同格式化设定,也就是两个%开头字符组合,第二个会应用在第一个

64.3K43
领券