有一个字符串:"QARR_1 * QARR_1 * NPSH[*] + NPSH0"
。我想把它分成一个字符串数组(恰好是4个项目),以得到输出:QARR_1,QARR_1,NPSH [*],NPSH0。
我明白,我应该在这里使用Regex环视概念,但是,我无法达到预期的效果。请帮助。
答案 0 :(得分:2)
我认为你可以这样做而没有外表:
(\w+(?:\[\*\])?)
http://rextester.com/YHNRC51736
(
\w+
(?:\[\*\])?
答案 1 :(得分:1)
import re
a = "QARR_1 * QARR_1 * NPSH[*] + NPSH0"
x= re.split(' \* | \+ ',a)
print x
['QARR_1','QARR_1','NPSH [*]','NPSH0']
答案 2 :(得分:1)
嗯,好吧......这适用于我使用的正则表达式工具:
\w+\[?\*?\]?
不是最优雅,但非常简单,只要输入不会像:" Abc12 *]"," abc12 []"等等
工作原理:
\w+
这将贪婪地捕获任何单词字符序列(一直捕捉,直到它用完匹配的字符),基本上转换为:[a-zA-Z0-9_]+
\[?
,\*?
,\]?
好吧,首先,此处的反斜杠用作转义字符,以使Regex真正查找字符[
,{ {1}}和*
。它们需要被转义,因为它们在Regex语法中具有特殊含义。每个部分末尾的]
告诉正则表达式模式匹配0到1次之间的字符。有必要能够捕获它0次,以允许在最后进行不具有字符(?
,[
,*
)的匹配。 它将匹配的一些事例:
]
apples123_121231_2133414[*]
Ap1]
Orange_11[*
它赢得的各种事物的几个例子: (注意,突出显示部分单词的情况,只匹配突出显示的部分。)
1ba222nnana*]
* [Pares]
] 111Grapes[
] * 所以,鉴于你提供的输入,它应该没问题......这些只是一些需要注意的事项。