我想从给定的字符串中找到所有数字(所有数字都与字母混合但用空格隔开)。我尝试拆分输入字符串,但是当检查结果数组时,我发现有很多空字符串,所以如何更改我的拆分正则表达式以删除此空白?
Pattern reg = Pattern.compile("\\D0*");
String[] numbers = reg.split("asd0085 sa223 9349x");
for(String s:numbers){
System.out.println(s);
}
结果:
85
223
9349
我知道我可以遍历数组并删除空结果。但是,仅使用正则表达式怎么办?
不要使用split
。使用find
将返回所有匹配子字符串的方法。你可以做到
Pattern reg = Pattern.compile("\\d+");
Matcher m = reg.matcher("asd0085 sa223 9349x");
while (m.find())
System.out.println(m.group());
将打印
0085
223
9349
根据您的正则表达式,看来您的目标也就是要删除前导零,例如0085
。如果是这样,则可以使用regex like
0*(\\d+)
并参加与组1(括号中的一个)匹配的部分,并在该组之外匹配前导零。
Pattern reg = Pattern.compile("0*(\\d+)");
Matcher m = reg.matcher("asd0085 sa223 9349x");
while (m.find())
System.out.println(m.group(1));
输出:
85
223
9349
但是,如果您真的想使用,split
然后更改"\\D0*"
为\\D+0*
,则可以拆分一个或多个非数字\\D+
,而不只是一个非数字\\D
,但是使用此解决方案,您可能需要忽略结果数组中的第一个空元素(取决于字符串)将从应拆分的元素开始)。
问题内容: 我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。 这是样品/条件 我希望字符串被拆分,,,,,, 这可能吗? 问题答案: 如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 在 此字符 之前 或 之后 进行拆分。 输出:
问题内容: 我想解决这个问题。 逗号:分割条款 双引号:字符串值(忽略特殊字符) 数组 例如: 输入: 预期输出: 但是我无法获得超越结果。 我写了下面的代码: 我的输出是: 我需要更改以获得预期的输出?我应该坚持使用正则表达式还是其他解决方案更灵活,更易于维护? 问题答案: 这个正则表达式可以达到目的: 它的工作原理是在逗号后添加一个用于匹配成对的方括号的预读-如果您 位于 方括号内,那么您当然
本文向大家介绍javascript中使用正则表达式删除前后空格的方法,包括了javascript中使用正则表达式删除前后空格的方法的使用技巧和注意事项,需要的朋友参考一下 去掉首位空格 js正则表达式删除字符串前后空格 让我们分析一下第二行的正则表达式 ^ 行开始 \s* 匹配字符前面的所有空格,贪婪模式重复 (.*?) 捕获组,勉强模式重复匹配任意字符,也就是我们最终需要(去掉前后空格后)的字符
问题内容: 在这里的问题中,我得到了正则表达式来匹配1到99之间的一组(或多个)数字,并用|隔开。或,(可以组合使用)。 我想对其进行更新以执行相同的操作,但现在接受0到99之间的数字。 此修改后的版本可以做到: 1个 但是现在接受空值(请参阅https://regex101.com/r/FfvavR/2) 题 如何修改低于1的regExp 以排除空值? 问题答案: 目前尚不清楚条目是有效还是无效
问题内容: 我正在尝试使用运算符-+ * /将正则表达式拆分为1.5 + 4.2 *(5 + 2)等式,以便将输出输入到数组中,以便我可以单独解析 我发现可以使用,但是如果我要保留小数点,它将不会拆分。 我已经尝试过分割,但是它不会在小数点上分割 问题答案: 您还可以使用?:避免捕获组。我把它简化了。
问题内容: 我想删除符合我的正则表达式的字符串的一部分。 我正在尝试制作一个电视节目组织计划,我想以SXXEXX的形式在季节和剧集标记后的名称中剪掉任何内容,其中X是一个数字。 我相当容易地掌握了正则表达式模型,以创建应正确匹配的“ [Ss] \ d \ d [Ee] \ d \ d”。 我想使用Matcher方法end()来获取匹配字符串中的最后一个索引,但是它似乎并没有按照我认为的那样工作。