2017-02-13 3 views
1

私は以下のRegexをPHPや他のコードで使っています。Golang Regex - 先読みから変換する

/^(?:(?=[^ ]+\d)(?:[A-Z0-9]+))|(?:[A-Z0-9]+) +?(?=.*\d)(?:[A-Z0-9]+)? 

Regular expression visualization

Debuggex Demo

これは、Goはlookheadsをサポートしていないと私はそれを越え変換する方法上の損失でだということが判明しました。

Debuggexリンクには、前にコードを修飾するために使用していたテストデータがあります。

+1

正規表現に* exact * specsを指定することができれば、助けが簡単になります。今のところ、数字がマッチの一部である必要があるかどうかは不明であるか、または期待されるマッチの後のどこかにあることを要求するだけです。 –

答えて

1

第1に、入力の開始前に/が表示されないことがあるので、最初に、/^...の左側は何も一致しません。以下のように表すことができるだけ(?:[A-Z0-9]+) +?(?=.*\d)

:使用される

((?:[A-Z0-9]+)).*\d.* 

用語" +?"だけ" "の効果と同一です。

ただし、これは元の入力よりも多くの入力を消費しますが、これはやむを得ないことです。元のマッチはグループ1になりました。

関連する問題