如何用正则表达式解析子字符串?
我的示例未解析数据是
"8$154#3$021308831#7$NAME SURNAME#11$2166220160#10$5383237309#52$05408166#"
我想解析 $ 和 # 字符串之间的数据。 我想看到这样的结果;
在 8$
和 #
之间 ->我的数据是 154
,
在 3$
和 #
之间 ->我的数据是021308831
,
在 7$
和 #
之间 ->我的数据是NAME SURNAME
,
在 11$
和 #
之间 ->我的数据是 2166220160
,
在 10$
和 #
之间 ->我的数据是 5383237309
,
在 52$
和 #
之间 ->我的数据是05408166
。
感谢您的回复。
My example non-parsed data is
"8$154#3$021308831#7$NAME SURNAME#11$2166220160#10$5383237309#52$05408166#"
I want to parse data that is between $ and # strings.
I want to see result like that;
Between 8$
and #
-> My data is 154
,
Between 3$
and #
-> My data is 021308831
,
Between 7$
and #
-> My data is NAME SURNAME
,
Between 11$
and #
-> My data is 2166220160
,
Between 10$
and #
-> My data is 5383237309
,
Between 52$
and #
-> My data is 05408166
.
Thanks for your reply.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
在 Rubular 上查看
您会找到第一部分(例如
8$
)在捕获组 1 中,相应的数据在组 2 中。括号负责将结果存储在这些捕获组中。
\d+
将匹配至少一位数字。.*?
是对下一个#
之前的所有内容的惰性匹配。See it on Rubular
You will find the first part (e.g.
8$
) in the capturing group 1 and the according data in the group 2.The brackets are responsible, that the result is sotred in those capturing groups. The
\d+
will match at least one digit. The.*?
is a lazy match for everything till the next#
.可以根据
#
拆分成数组。这样
你就会得到一个包含“8$154”、“3$021308831”等的数组。
现在你只需处理这些条目并在美元符号处分割每个条目:
所以你会得到
一些支票,你会很高兴。我想这里不需要正则表达式。
如果你有“8$15$4#3$021308831”,那么你将进入
tmp
:所以你必须连接索引1以上的所有tmp:
You can split into array based on
#
.With
you will get an arrays with "8$154", "3$021308831", etc.
Now you just work with the entries and split each one at the dollar sign:
So you get
Build in some checks and you will be happy. No need for regex here I suppose.
If you have "8$15$4#3$021308831" then you will get in
tmp
:So you would have to concat all tmp above index 1:
好的,采用 stema 的表达式,有效。
感谢 stema,这可以解决值中重复的
$
问题。Ok, taking stema's expression, which works.
Thanks to stema, this copes with the
$
repeating within the value.如果你想使用正则表达式,这应该可以做到。
If you want to use regex this should do it.
这将匹配 $ 和 # 之间:
This will match betweel $ and #: