2016-08-11 8 views
1

- 私:正規表現の問題

ストリング

type="post" id="1" text="Blog Post" 

正規表現

/(?<name>\\S+)=["']?(?P<value>(?:.(?!["']?\\s+(?:\\S+)=|[>"']))+.)["']?/u 

各値が2文字以上であれば正常に動作します。私は値が1文字だけです(ここのIDのような)私はの後にの引用を得ます。

type => post 
id => 1" 
text => Blog Post 

正規表現の私のバグがあるノーアイデアI've:IDを持つこの例のように、私は次の出力を取得します。多分誰かが私にヒントを与えることができますか?

ありがとうございます!

+0

正規表現でマークアップを解析しようとしているように見えますが、これは決して良い考えではありません。マークアップを使用するにはDOMパーサーが必要です。 –

+0

いいえ、私はDOMを解析していません。私はそれを処理するテキストでショートコード(Wordpressのような)を探しています。 – Michael

答えて

1

最新のポイントは冗長だと思います。

/(?<name>\\S+)=["']?(?P<value>(?:.(?!["']?\\s+(?:\\S+)=|[>"']))+)["']?/u 

私はあなたがこの正規表現を使用しているかkonwないが、私はあなたがこのオプションを使用することができると思う: あなたはこれを試みることができる

/(\w+)=["']?([^"']+)["']/ug 

するか、私に多くの情報を提供しています。

+0

Hm ..私は問題(属性 "エラー")を見ることができるregex101ページを作成しました:https://regex101.com/r/yX2uW2/1 – Michael