我正在尝试将包含所有非字母数字字符的字符串拆分为分隔符,但Java的String.split()方法会丢弃结果数组中的分隔符字符.有没有办法像"\ W"正则表达式模式那样分割字符串,但保留分隔符?
我有这样的字符串String str = "la$le\\$li$lo".
我想拆分它以获得以下输出"la","le\\$li","lo".\ $是一个$转义所以它应该留在输出中.
但是,当我做 str.split("[^\\\\]\\$")ÿ得到"l","le\\$l","lo".
从我得到的我的正则表达式匹配$和i $然后删除.知道如何让我的角色回来吗?
谢谢
我正在尝试使用正则表达式解决来自codingbat.com的问题.
我是新手,所以一步一步的解释将不胜感激.我可以相对容易地使用String方法解决这个问题,但我正在尝试使用正则表达式.
这是提示:给定一个字符串和一个非空字符串,在字符串中每次出现单词之前和之后返回由每个char组成的字符串.忽略在单词之前或之后没有字符的情况,如果字符位于两个单词之间,则可以包括两次char.
wordEnds("abcXY123XYijk", "XY") ? "c13i"
wordEnds("XY123XY", "XY") ? "13"
wordEnds("XY1XY", "XY") ? "11"
Run Code Online (Sandbox Code Playgroud)
等等
我的代码到目前为止:
String regex = ".?" + word+ ".?";
Pattern p = Pattern.compile(regex);
Matcher m = p.matcher(str);
String newStr = "";
while(m.find())
newStr += m.group().replace(word, "");
return newStr;
Run Code Online (Sandbox Code Playgroud)
问题是当一行中有多个单词实例时,程序会错过单词前面的字符,因为m.find()会超出它.
例如:wordEnds("abc1xyz1i1j", "1")应该返回"cxziij",但我的方法返回"cxzij",而不是重复"i"
我将非常感谢一个非混乱的解决方案,并且可以解释我可以应用于其他一般正则表达式问题.
我正在从数据库中检索字符串并将其存储到for循环内的String变量中.我正在检索的几个字符串的形式为:
https://www.ppltalent.com/test/en/soln-computers-ltd
很少有人的形式
https://www.ppltalent.com/test/ja/aman-computers-ltd
我希望将字符串分成两个子串,即
https://www.ppltalent.com/test/en/soln-computers-ltdas https://www.ppltalent.com/test/en和/soln-computers-ltd.
如果我只有它,它可以很容易地分开/en.
String[] parts = stringPart.split("/en");
System.out.println("Divided String : "+ parts[1]);
Run Code Online (Sandbox Code Playgroud)
但在它的许多字符串中/jr,/ch等等.
那么如何将它们分成两个子字符串呢?