文字列:"QARR_1 * QARR_1 * NPSH[*] + NPSH0"
があります。 QARR_1、QARR_1、NPSH [*]、NPSH0のように出力を得るために、文字列配列(正確には4つの項目)に分割します。無視された文字を含むいくつかの文字で文字列を分割する
ここでRegexのルックアライメントの概念を使用する必要がありますが、希望する結果を得ることができません。親切に助けてください。
文字列:"QARR_1 * QARR_1 * NPSH[*] + NPSH0"
があります。 QARR_1、QARR_1、NPSH [*]、NPSH0のように出力を得るために、文字列配列(正確には4つの項目)に分割します。無視された文字を含むいくつかの文字で文字列を分割する
ここでRegexのルックアライメントの概念を使用する必要がありますが、希望する結果を得ることができません。親切に助けてください。
は、私はあなたが前後参照せずに、このようにそれを行うことができると思う:
(\w+(?:\[\*\])?)
http://rextester.com/YHNRC51736
(
(?:\[\*\])?
import re
a = "QARR_1 * QARR_1 * NPSH[*] + NPSH0"
x= re.split(' \* | \+ ',a)
print x
[ 'QARR_1'、 'QARR_1'、 'NPSH [*]'、 'NPSH0']
よく、うーんこれは私が使用する正規表現ツールで動作します。
\w+\[?\*?\]?
ない最もエレガントな、しかし非常に単純なので、長い入力が壊れていないようように:「ABC12 *]」、「ABC12 []」など
仕組み:これは欲張って、基本的に変換、(それが一致する文字がなくなるまで捕捉し続ける)単語任意の文字列をキャプチャします
\w+
:[a-zA-Z0-9_]+
\[?
、\*?
、 \]?
よく始めると、バックスラッシュはエスケープ文字として使用され、Regexは文字通り文字[
,*
および]
を探します。 Regexの構文では特別な意味を持つため、エスケープする必要があります。各部分の末尾にある?
は、0と1の間の文字と一致するようにRegexパターンを指示します。最後に文字([
、*
、]
)を持たない一致を可能にするために、それを0回捕らえる必要があります。物事の種類のいくつかの例では一致します。
apples123_121231_2133414[*]
Ap1]
Orange_11[*
1ba222nnana*]
物事の種類のいくつかの例には一致しません: (ノート、単語の一部が強調表示されている例を、唯一のハイライト部が一致します。)
Pares]
* [111Grapes[
]111Grapes[
] *ので、与えられた入力ヨーヨーあなたが知っておくべきことのほんの一部です。
したがって、「」に分割したいとします。 '?それともそれほど単純ではないのですか? –
AakashM
@AkashM、数式演算子(+、 - 、\ *、/)に分割したいが、\ [\ * \]ではない。 – WpfBee