2008-12-14 11 views
5

mam ciąg znaków, który wygląda jakWyrażenie regularne: jak umieszczać pojedyncze cudzysłowy wokół wartości atrybutów XML?

"<input id=a/>"<input id=b/>"<input id=c/>etc. 

muszę go zmienić na

"<input id='a'/>"<input id='b'/>"<input id='c'/>etc, 

jakieś pomysły w jaki sposób?

+0

Proszę włożyć trochę wysiłku w swoje pytania. Wybierz na przykład znaczący tytuł. – hop

+0

Wow! Czy nikt nie zadał sobie trudu sprawdzenia formatowania przed zrzutem na to pytanie? – tvanfosson

+0

to wciąż złe pytanie. w jakim języku powinna być odpowiedź? dlaczego rzuca na nas stosunkowo drobny problem bez najmniejszego wysiłku? – hop

Odpowiedz

1

Jak o tym:

%s/"<input id=\(.\)\/>/"<input id='\1'\/>/g 

to również działa:

%s/\("<input id=\)\(.\)\/>/\1'\2'\/>/g 
4

W języku C# można napisać go jako:

resultString = Regex.Replace(subjectString, @"(<.*?id\s*=\s*)(\w+)(.*?>)", "$1'$2'$3", RegexOptions.Multiline); 

w VB.NET to byłoby po prostu :

ResultString = Regex.Replace(SubjectString, "(<.*?id\s*=\s*)(\w+)(.*?>)", "$1'$2'$3", RegexOptions.Multiline) 

W kanonicznej Perl, można napisać jako:

$subject =~ s/(<.*?id\s*=\s*)(\w+)(.*?>)/$1'$2'$3/mg; 

W PHP:

$result = preg_replace('/(<.*?id\s*=\s*)(\w+)(.*?>)/m', '$1\'$2\'$3', $subject); 

W Javie:

resultString = subjectString.replaceAll("(?m)(<.*?id\\s*=\\s*)(\\w+)(.*?>)", "$1'$2'$3"); 

w JavaScript:

result = subject.replace(/(<.*?id\s*=\s*)(\w+)(.*?>)/mg, "$1'$2'$3"); 
+0

ratownik życia! Dziękuję Ci –

0

Trudno odpowiedzieć na to z tylko jedną małą próbką. Dla danej próbki tekstu, można wyszukać regex:

=(\w) 

i zastąpić go:

='$1' 

lub:

='\1' 

zależności od tego czy jesteś język programowania działa z interpretacją 1 $ lub \ 1 jako odniesieniem do pierwszej grupy przechwytującej w tekście zastępczym.

Ta trywialna funkcja wyszukiwania i zastępowania działa idealnie na podanym przykładzie.

Obawiam się, że to nie zadziała na twoich faktycznych danych. Jeśli tak jest, to dlatego, że przykładowy tekst nie jest reprezentatywny dla rzeczywistych danych. Najtrudniejszą częścią tworzenia wyrażeń regularnych jest ustalenie, co chcesz dopasować, a czego nie chcesz dopasować. To jest coś, co musisz podać w swoim pytaniu.

Powiązane problemy