1

こんにちは、私は正規表現が初めてで、これを使用\s{2,}してジャンクのスペースをキャッチしようとしていますが、"url":"https://x.com/a/C25/XPS - Connection - May 2013.docx". 現在、URL がまだエンコードされていないシナリオがあるため、中にスペースが含まれている可能性があります。

サンプルテキスト:

"startofjunk      junkjunkjunkjunk","url":"https://x.com/a/C25/XPS  - Connection - May 2013.docx","contentsource":"AX","returpath":null,"detailpath":"https://ax.sample.com/Rep>ositories/form.aspx?path=C25/96/99&mode=Read","detailspath2":"samplepath"

ご希望のテキスト:

"startofjunk junkjunkjunkjunk","url":"https://x.com/a/C25/XPS  - Connection - May 2013.docx","contentsource":"AX","returpath":null,"detailpath":"https://ax.sample.com/Rep>ositories/form.aspx?path=C25/96/99&mode=Read","detailspath2":"samplepath"

助けてください。ありがとう

4

2 に答える 2

0

先読みを使用して、スペースが「url」の前にあることを主張します。また、ルックビハインドを使用して、一致全体が余分なスペースになるようにします。

(?<=\s)\s+(?=.*"url":)

余分なスペースを削除するには、一致全体を空白 (つまり何もない) に置き換えるか、アプリケーション言語で許可されている場合は一致全体を削除します。

于 2013-06-04T12:30:19.570 に答える
0

説明

この正規表現は、すべての複数のスペースを 1 つのスペースに置き換え、url セクションをバイパスします。X 個のスペースのシーケンスでは、最初のスペースがグループ 1 に配置され、それが出力 as に供給され\1、追加のスペースは無視されます。URL セクションは、|or ステートメントの一部として検出された場合、グループ 2 に取り込まれ、\2置換によって出力に戻されるため、バイパスされます。

正規表現: (\s)\s*|("url":"[^"]*")、置換:\1\2

ここに画像の説明を入力

ソース文字列

"startofjunk        junkjunkjunkjunk","url":"https://x.com/a/C25/XPS - Connection - May 2013.docx","contentsource":"AX","returpath":null,"detailpath":"https://ax.sample.com/Rep>ositories/form.aspx?path=C25/96/99&mode=Read","detailspath2":"samplepath"

PHP の例

このphpの例は、正規表現が機能することを単に示すために含まれています

<?php
$sourcestring="your source string";
echo preg_replace('/(\s)\s*|("url":"[^"]*")/im','\1',$sourcestring);
?>

$sourcestring after replacement:
"startofjunk junkjunkjunkjunk","url":"https://x.com/a/C25/XPS - Connection - May 2013.docx","contentsource":"AX","returpath":null,"detailpath":"https://ax.sample.com/Rep>ositories/form.aspx?path=C25/96/99&mode=Read","detailspath2":"samplepath"
于 2013-06-04T05:03:07.387 に答える