【问题标题】:Regex pattern to split string用于拆分字符串的正则表达式模式
【发布时间】:2021-02-16 13:11:23
【问题描述】:

试图拆分并找出可以为我的案例做的正则表达式模式,但没有找到解决方案。 我有以下字符串

param1=234&param2=5||param3>3&param4=N/A (04)&param5=some valued&param6=this good - new value&param7=A (newparam)

我的步骤

1. string.replaceAll("&|\\|\\|", ",");
2. string.split("[\\w,]")

如果放这样的字符串

param1=234&param2=5||param3>3

然后它拆分为值:

param1
234
param2
5
param3
3

但是当我有空格和“/”和“(”和“-”时,它会被划分为每个值。 那么应该使用什么正则表达式模式才能获得以下输出?

param1
234
param2
5
param3
3
param4
N/A (04)
param5
some valued
param6
this good - new value
param7
A (newparam)

我这样做是为了在此之后将它们作为 key=value 插入到地图中。可能存在其他方法来接近,但现在如果我已经分离了值数组,那么我可以将它们插入到地图中。

所以,现在我只需要一个如何拆分它的正则表达式。 提前致谢

【问题讨论】:

  • 拆分[=&>]|\\|\\|
  • 使用s.split("\\|{2}|[&=<>]"),见demo
  • 哇,我试图解决这个问题,以找出什么模式,你在这里写了答案。我需要从一开始就学习这个正则表达式。你的答案应该在主要答案中。需要为你们投票。非常感谢!!
  • 两个答案都很好!!你们救了我!!

标签: java regex split


【解决方案1】:

您可以在 .split() 中应用此正则表达式

[=&>]|\\|\\|
  • [=&>] - 查找等号或 & 或 >
  • | - 或
  • \\|\\| - 找到双管

[=&>] 等同于=|&|>,因此如果您更易读,您也可以使用=|&|>|\\|\\|

【讨论】:

  • 如果我还想添加 >= -- 等于或更大怎么办? param1=234&param2=5||param3>3param4>=5
  • @master17 因为它是两个连续的字符,然后在末尾添加一个管道,如|>=|<= 同上。如果您只是添加一个单独的字符,那么您可以将其放入字符集大括号[]
  • 你的意思是这样的:[=&><]||\|\||<=|>=
  • 不,它不适用于 >= 和 的表达式
  • @master17 我仔细查看了[=&><]||\|\||<=|>=,它看起来不对。对于java,您需要转义转义符\\|。不知道你为什么会犯这个错误......
【解决方案2】:

如果要创建键值映射:

  1. &|\|\|上拆分,得到param1=234param2=5param3>3等字符串。
  2. 对于每个字符串在[>=] 上拆分以获得单个键值对。

【讨论】:

    猜你喜欢
    • 2021-10-25
    • 1970-01-01
    • 2010-10-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多