我有一个多行字符串,由一组不同的分隔符分隔:
(Text1)(DelimiterA)(Text2)(DelimiterC)(Text3)(DelimiterB)(Text4)
Run Code Online (Sandbox Code Playgroud)
我可以将这个字符串拆分成它的部分,String.split但是看起来我无法获得与分隔符正则表达式匹配的实际字符串.
换句话说,这就是我得到的:
Text1Text2Text3Text4这就是我要的
Text1DelimiterAText2DelimiterCText3DelimiterBText4是否有任何JDK方法使用分隔符正则表达式拆分字符串,但也保留分隔符?
我想编写一个将CamelCase转换为人类可读名称的方法.
这是测试用例:
public void testSplitCamelCase() {
assertEquals("lowercase", splitCamelCase("lowercase"));
assertEquals("Class", splitCamelCase("Class"));
assertEquals("My Class", splitCamelCase("MyClass"));
assertEquals("HTML", splitCamelCase("HTML"));
assertEquals("PDF Loader", splitCamelCase("PDFLoader"));
assertEquals("A String", splitCamelCase("AString"));
assertEquals("Simple XML Parser", splitCamelCase("SimpleXMLParser"));
assertEquals("GL 11 Version", splitCamelCase("GL11Version"));
}
Run Code Online (Sandbox Code Playgroud) 我有这样的字符串String str = "la$le\\$li$lo".
我想拆分它以获得以下输出"la","le\\$li","lo".\ $是一个$转义所以它应该留在输出中.
但是,当我做 str.split("[^\\\\]\\$")ÿ得到"l","le\\$l","lo".
从我得到的我的正则表达式匹配$和i $然后删除.知道如何让我的角色回来吗?
谢谢
你能在后视镜中使用反向引用吗?
假设我想split在我身后的任何地方重复两次角色.
String REGEX1 = "(?<=(.)\\1)"; // DOESN'T WORK!
String REGEX2 = "(?<=(?=(.)\\1)..)"; // WORKS!
System.out.println(java.util.Arrays.toString(
"Bazooka killed the poor aardvark (yummy!)"
.split(REGEX2)
)); // prints "[Bazoo, ka kill, ed the poo, r aa, rdvark (yumm, y!)]"
Run Code Online (Sandbox Code Playgroud)
使用REGEX2(其中反向引用嵌套在lookbehind中的前瞻)可以工作,但REGEX1在运行时会出现此错误:
Look-behind group does not have an obvious maximum length near index 8
(?<=(.)\1)
^
Run Code Online (Sandbox Code Playgroud)
这个排序是有意义的,我想,因为在一般的反向引用可以捕捉任何长度的字符串(如果正则表达式编译器是有点聪明,但是,它可以判断\1是(.)在这种情况下,因此具有有限的长度).
那么有没有办法在后视镜中使用反向引用?
如果没有,你可以使用这个嵌套的前瞻来解决它吗?还有其他常用技术吗?
我做了一个关于标点符号和正则表达式的问题,但这令人困惑.
我有这样的文字:
String text = "wor.d1, :word2. wo,rd3? word4!";
Run Code Online (Sandbox Code Playgroud)
我这样做:
String parts[] = text.split(" ");
Run Code Online (Sandbox Code Playgroud)
我有这个:
wor.d1, | :word2. | wor,d3? | word4!;
Run Code Online (Sandbox Code Playgroud)
有这个我需要做什么?(将符号保留在边界处,但仅限于我指定的:.,!?:,而不是全部).
wor,d1 | , | : | word2 | . | wor,d3 | ? | word4 | !
Run Code Online (Sandbox Code Playgroud)
我用这些正则表达式获得了一些好的结果,但它在一个单词开头的标点符号的所有分割之前给出了一个空的char.
有一种方法可以在一开始没有这个空的char?
这个正则表达式是好的还是有更简单的方法?
public static final String PUNCTUATION_SEPARATOR =
"("
+ "("
+ "(?=^[\"'!?.,;:(){}\\[\\]]+)"
+ "|"
+ "(?<=^[\"'!?.,;:(){}\\[\\]]+)"
+ ")"
+ "|"
+ "("
+ "(?=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ "|"
+ "(?<=[\"'!?.,;:(){}\\[\\]]+($|\n))"
+ ")"
+ ")";
Run Code Online (Sandbox Code Playgroud) 我有一个字符串,其中包含一个连续的数字块,然后是一个连续的字符块.我需要将它们分成两部分(一个整数部分和一个字符串).
我尝试过使用String.split("\\D", 1),但它正在吞噬第一个角色.我检查了所有的String API,但没有找到合适的方法.
做这件事有什么方法吗?
概观
我将字符串发送到文本到语音服务器,该服务器最多可接受300个字符.由于网络延迟,返回的每个语音段之间可能会有延迟,因此我希望尽可能在最"自然暂停"时打破语音.
每个服务器的请求花了我的钱,所以最好我会送的最长的字符串可能,直到达到最大允许的字符.
这是我目前的实施:
private static final boolean DEBUG = true;
private static final int MAX_UTTERANCE_LENGTH = 298;
private static final int MIN_UTTERANCE_LENGTH = 200;
private static final String FULL_STOP_SPACE = ". ";
private static final String QUESTION_MARK_SPACE = "? ";
private static final String EXCLAMATION_MARK_SPACE = "! ";
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
private static final String COMMA_SPACE = ", ";
private static final String JUST_A_SPACE = " ";
public static ArrayList<String> splitUtteranceNaturalBreaks(String utterance) {
final long …Run Code Online (Sandbox Code Playgroud) 我有一个字符串:
strArray= "-------9---------------";
Run Code Online (Sandbox Code Playgroud)
我想从字符串中找到9.字符串可能是这样的:
strArray= "---4-5-5-7-9---------------";
Run Code Online (Sandbox Code Playgroud)
现在我只想找出字符串中的数字.我需要值9,4,或者这样的东西而忽略' - '.我尝试了以下方法:
strArray= strignId.split("-");
Run Code Online (Sandbox Code Playgroud)
但是它会出错,因为有多个' - '并且我没有得到我的输出.那么java应该使用什么功能呢?
我的输入和输出应如下:
input="-------9---------------";
output="9";
input="---4-5-5-7-9---------------";
output="45579";
Run Code Online (Sandbox Code Playgroud)
我该怎么办?
我试图在1.5 + 4.2*(5 + 2)等方程式上运用正则表达式与运算符 - +*/所以输出将输入到数组中,这样我就可以单独解析
[0]1.5
[1]+
[2]4.2
[3]*
[4](
[5]5
[6]+
[7]2
[8])
Run Code Online (Sandbox Code Playgroud)
我已经发现,在\b将工作于1+2+3但是如果我有它不会分裂小数点.
我试过分裂,\b(\.\d{1,2})但它没有分裂小数点
我正在使用Play框架并从textarea中获取文本,我想将其拆分为输入的单词,空格和换行符的数组.
你好世界如何
你是
会是这样的
a[0] = "Hello";
a[1] = " ";
a[2] = "World";
a[3] = " ";
a[4] = "How";
a[5] = "\n";
a[6] = "Are";
a[7] = " ";
a[8] = "You";
Run Code Online (Sandbox Code Playgroud)
如果有一个简单的正则表达方式或类似的东西,我很乐意听到它?
例如: strEquation="36+5-8X2/2.5"
我的代码是:
String[] tmp = strEquation.split("[X\\+\\-\\/]+");
for(int i=0; i<tmp.length; i++)
Log.d("Split array",tmp[i]);
Run Code Online (Sandbox Code Playgroud)
和我的输出,我认为它将是:
36
5
8
2
2.5
Run Code Online (Sandbox Code Playgroud)
我希望tmp字符串数组也会放入我正在拆分的字符,如下所示:
tmp[0] = 36
tmp[1] = +
tmp[2] = 5
tmp[3] = -
tmp[4] = 8
tmp[5] = X
tmp[6] = 2
tmp[7] = /
tmp[8] = 2.5
Run Code Online (Sandbox Code Playgroud)
知道怎么做吗?
我正在尝试使用各种字符作为分隔符来分割字符串,并将这些分隔符保留在它们自己的数组索引中.例如,说我要拆分字符串:
if(x> 1)返回x*fact(x-1);
使用'(','>',')','*',' - ',';' 和'\ s'作为分隔符.我希望输出为以下字符串数组:{"if","(","x",">","1",")","return","x","*","事实","(","x"," - ","1",")",";"}
我到目前为止使用的正则表达式是
split("(?=(\\w+(?=[\\s\\+\\-\\*/<(<=)>(>=)(==)(!=)=;,\\.\"\\(\\)\\[\\]\\{\\}])))")
它会在每个单词字符处分开,而不管它是否跟在其中一个分隔符之后.例如
测试+ 1
输出{"t","e","s","t +","1"}而不是{"test +","1"}
为什么它会在每个角色上分裂,即使该角色没有被我的一个分隔符跟着?也是一个正则表达式,甚至可以在Java中实现这一点?谢谢
我想在Java上使用正则表达式来分割数字字符串.我使用在线正则表达式测试器测试正则表达式是对的.但在Java中是错误的.
Pattern pattern = Pattern.compile("[\\\\d]{1,4}");
String[] results = pattern.split("123456");
// I expect 2 results ["1234","56"]
// Actual results is ["123456"]
Run Code Online (Sandbox Code Playgroud)
我有什么遗失的吗?
我知道这个问题很无聊.但我想解决这个问题.回答
Pattern pattern = Pattern.compile("[\\d]{1,4}");
String[] results = pattern.split("123456");
// Results length is 0
System.out.println(results.length);
Run Code Online (Sandbox Code Playgroud)
不管用.我试过了.它不会返回结果.请在回答之前尝试一下.
真诚地感谢帮助我的人们.
解:
Pattern pattern = Pattern.compile("([\\d]{1,4})");
Matcher matcher = pattern.matcher("123456");
List<String> results = new ArrayList<String>();
while (matcher.find()) {
results.add(matcher.group(1));
}
Run Code Online (Sandbox Code Playgroud)
输出2结果["1234","56"]
java ×13
regex ×10
string ×6
split ×3
android ×1
arrays ×1
camelcasing ×1
delimiter ×1
humanize ×1
lookaround ×1
lookbehind ×1
math ×1
punctuation ×1
separator ×1