我想按拆分字符串
如果其他字符仅按字母顺序排列,且字符串不以
开头或结尾
。
因此,
abc的预期结果。def。xyz
将是[abc,def,xyz]
。
下面的字符串应该保持原样:
abc.
xy. a3
1a.ab
abc.def,xyz
基本上,我正在寻找一个更优雅的解决方案,我的当前代码:
if(canSplit(x)){
var parts = x.split("\\.");
...
}
boolean canSplit(String text) {
if(text.startsWith(".") || text.endsWith(".")) return false;
for(var s : text.split("\\.")) {
for(int i = 0; i < s.length(); i++) {
if(!Character.isAlphabetic(s.charAt(i))) return false;
}
}
return true;
}
你的衣服没问题。但是如果你想使用regex,你的canSplit
方法可以如下所示:
boolean canSplit(String text) {
String regex = "[a-z]+(?:\\.[a-z]+)+";
return text.matches(regex);
}
您可以使用此正则表达式并抓取捕获的组#1
(?:^(?=\p{L}+(?:\.\p{L}+)+$)|(?!^)\G\.)(\p{L}+)
正则表达式演示
细节:
(?=\p{L} (?:\.\p{L} ) $)
确保我们只在一行中使用点分隔的字母\G
断言上一场比赛结束时的位置或第一场比赛的字符串开始时的位置(?! ^)
确保我们在开始时不允许\G
匹配Java代码:
jshell> String str = "abc.def.xyz";
str ==> "abc.def.xyz"
jshell> String re = "(?:^(?=\\p{L}+(?:\\.\\p{L}+)+$)|(?!^)\\G\\.)(\\p{L}+)";
re ==> "(?:^(?=\\p{L}+(?:\\.\\p{L}+)+$)|(?!^)\\G\\.)(\\p{L}+)"
jshell> Pattern.compile(re, Pattern.MULTILINE).matcher(str).results().flatMap(mr -> IntStream.rangeClosed(1, mr.groupCount()).mapToObj(mr::group)).collect(Collectors.toList());
$6 ==> [abc, def, xyz]
问题内容: 我有一个字符串,需要根据出现的“,”(逗号)进行拆分,但是需要忽略在一对括号内出现的任何字符串。例如, 应拆分为 问题答案: 对于非嵌套 嵌套 (括号内的括号)
问题内容: 我是regex的新手,我想做的是在特定条件下拆分String,但我不知道该怎么做。 这是样品/条件 我希望字符串被拆分,,,,,, 这可能吗? 问题答案: 如果 确实 需要使用正则表达式,则可能应该使用环顾四周机制,因为您不想 在 此字符 之前 或 之后 进行拆分。 输出:
上下文:我需要拆分太长的字符串,这些字符串用作html表中的列标题。这些字符串是变量名,因此它们中没有空格。 如果让css属性执行此操作,则字符串将在固定位置拆分,而不是使用字符串中的点或。 例如,假设我有以下字符串: 使用点作为分隔符,我可以用很多很多不同的方法来分割它。但我提出了以下指导原则: 所有子串必须为12个字符或更少 分隔符[。_]应该在子字符串的末尾,而不是开头 子串的数量必须最小
问题内容: 我有一个字符串,我想使用regex表达式拆分此字符串,以便该函数返回数组: 我将如何使用Swift进行此操作? 编辑 我的问题不同于链接的问题。我意识到您可以使用迅速拆分字符串。问题是该问题没有解决如何制作正则表达式的问题。我尝试使用,但是没有用。 如何使该部分成为正则表达式? 问题答案: Swift到目前为止还没有本地正则表达式。但提供。 运行此将输出
我有一个表格形式的命令输出。我正在解析结果文件的输出并将其存储在字符串中。一行中的每个元素由一个或多个空格字符分隔,因此我使用正则表达式匹配1个或多个空格并拆分它。但是,在每个元素之间插入一个空格: 还有更好的方法吗? 每次拆分后,str2都会附加到列表中。
使用Java和正则表达式,我想从一行文本中提取字符串。文本可以采用以下格式- 键1(值1)键2(值2) 当使用类型#1时,我能够成功地提取键和值,我可以使用空格分割文本,然后使用以下模式提取键 对于案例#2和案例#3,可以使用复杂的代码逻辑来计算“(”的出现,并将其与空格的出现相匹配,但是,代码变得太长了。当值中也存在空格时,会出现多种复杂情况,因为这样,分割文本就会出现问题。 有没有更好的正则表