当前位置: 首页 > 面试题库 >

分割多个定界符,但将定界符保留在同一字符串上

东郭骁
2023-03-14
问题内容

我需要正则表达式的帮助来解决以下问题:

我有一个字符串,例如“ 1£23 $ 456 $£$”

当我拆分它时,我希望字符串数组中的输出包含:

1£
23$
456$
£
$

有人对如何最好地解决这个问题有任何想法吗?该解决方案需要满足以下附加要求:

  1. 也各执分隔符:+-*,和/
  2. 非定界符字符只是在定界符前带有可选空格的数字。
  3. 任何此类空格都是值的一部分,而不是分隔符本身。

问题答案:

使用更强大的Matcher功能代替String.split。下面的代码应该可以使用,但是尚未进行优化:

Pattern pattern = Pattern.compile("\\d*(\\$|£)");

String input = "1£23$456$£$";
Matcher matcher = pattern.matcher(input);
List<String> output = new ArrayList<>();
while (matcher.find()) {
    output.add(matcher.group());
}

打印output.toString()产生:

[1£, 23$, 456$, £, $]

更新的要求:

  1. 还包括分隔符:+-*,和/
  2. 非定界符字符只是在定界符前带有可选空格的数字。
  3. 任何此类空格都是值的一部分,而不是分隔符本身。

使用正则表达式: \\d*\\s*[-\\+\\*/\\$£]

该模式,具有给定的输入:

1£23$456$£$7+89-1011*121314/1 £23 $456 $ £ $7 +89 -1011 * 121314 /

将生成此输出:

[1£, 23$, 456$, £, $, 7+, 89-, 1011*, 121314/, 1 £, 23 $, 456 $, £, $, 7 +, 89 -, 1011 *, 121314 /]



 类似资料:
  • 问题内容: 说我有以下字符串: 我想将其拆分为句子,以便获得以下列表: 如您所见,我想在所有出现的字符串上拆分字符串,而不是在或的任何出现上进行拆分。在这种情况下,Python将无法正常工作,因为它将字符串的每个字符都视为一个单独的定界符,而不是将整个字符串视为一个多字符定界符。有解决此问题的简单方法吗? 问题答案: 为我工作

  • 问题 你需要将一个字符串分割为多个字段,但是分隔符(还有周围的空格)并不是固定的。 解决方案 string 对象的 split() 方法只适应于非常简单的字符串分割情形, 它并不允许有多个分隔符或者是分隔符周围不确定的空格。 当你需要更加灵活的切割字符串的时候,最好使用 re.split() 方法: >>> line = 'asdf fjdk; afed, fjek,asdf, foo' >>>

  • 问题内容: 我有一个多行字符串,该字符串由一组不同的定界符定界: 我可以使用将该字符串拆分为多个部分,但似乎无法获取与定界符匹配的实际字符串。 换句话说,这就是我得到的: 这就是我要的 是否有任何JDK使用分隔符regex拆分字符串但又保留分隔符的方法? 问题答案: 你可以使用和。像这样: 你将获得: 最后一个是你想要的。 等于选择之前;或之后的空字符;。 希望这可以帮助。 编辑 Fabian S

  • 问题内容: 我知道您可以使用分割字符串。但是我不知道如何用两个定界符分割字符串。 例: 我需要这样的东西: 它的正则表达式是什么? 问题答案: 用这个 :

  • 问题内容: 我有以下格式的字符串: 我试图用来拆分字符串,并在新行上打印每个子字符串。这是我在做什么: 打印: 如何在每个定界符上拆分它? 问题答案: 要使用GNU sed用分隔符分割字符串,请说: 例如,使用用作分隔符进行分割: 或使用非GNU sed: 在这种特殊情况下,您错过了替换后的。因此,仅执行一次。看到: 代表小叶,表示必须在全局范围内(即任何情况下)进行替换。请注意,默认值为1,如果

  • 问题内容: 如何用定界符分割字符串,但是如果转义了,则不能分割?例如,我有一个字符串: 定界符为,转义定界符为。此外,我想忽略转义的反斜杠,因此中的仍然是分隔符。 因此,使用上面的字符串,结果应该是: 问题答案: 使用黑魔法: 匹配一个反斜杠,后跟一个字符,将其跳过并匹配您的定界符。