Normal ifade soru işaretinden sonra her şeyle eşleşiyor mu?


125

Yahoo Pipes'te beslemem var ve bir soru işaretinden sonra her şeyi eşleştirmek istiyorum.

Şimdiye kadar soru işaretinin nasıl eşleştirileceğini buldum ..

\?

Şimdi sadece soru işaretinden sonraki / sonraki her şeyi eşleştirmek için.


2
\?.*sonrasındaki her şeyle (boş bir dize dahil) eşleşir ?.
khachik

Hangi programlama dilini kullanıyorsunuz?
Mark Byers

1
Java kullananlar için, bu kadar"\\?"
CodyBugstein

Yanıtlar:


251
\?(.*)

İlk yakalama grubunun içeriğini istiyorsunuz.


15
@ İşaretle, ihtiyacınız olan şey buysa (bu soru eski olsa bile!), Lütfen bunu bir yanıt olarak işaretleyin.
Pieter VDE

5
@Dreamonic Bunun olduğunu düşünmeyin :(
Starkers

4
@Starkers Sen haklısın. Olmayacak. Mark o zamandan beri çalışmıyor Feb 5 '11 at 10:41. Yine de aldığımız her değişikliği belirtmek güzel. Belki birisi bunu Dreamonic'ten öğrenecek.
DutGRIFF

1
son soru işaretinden sonra içeriği nasıl yakalarsınız? Bundan sonra 'demirlemek' istiyorum - çapanın doğru kelime olup olmadığından emin değilim.
BKSpurgeon

2
@BKSpurgeon ilk yakalama grubu ^. * \? ([^?] *) $ Çalışmalı
thejh

61

Bunu dene:

\?(.*)

Parantezler, dizenin ilgilendiğiniz kısmını çıkarmak için kullanabileceğiniz bir yakalama grubudur.

Dizge yeni satırlar içeriyorsa, noktanın yeni satır karakteriyle eşleşmesine izin vermek için "dot all" değiştiricisini kullanmanız gerekebilir. Bunu yapmak zorunda olup olmamanız ve bunu nasıl yapacağınız, kullandığınız dile bağlıdır. Sorunuzda kullandığınız programlama dilinden bahsetmeyi unutmuşsunuz gibi görünüyor.

Diliniz sabit genişlikte geriye doğru bakma iddialarını destekliyorsa kullanabileceğiniz başka bir alternatif şudur:

(?<=\?).*

Ah sabit genişlik? Böyle bir şey için arkama bakabilir miyim? Konular: kod, programlama, tasarım Öyleyse iki nokta üst üste işaretini seçmek ve satırın sonuna kadar konuların ve öbür tarafların genel T'sine bakmak istiyorum? (hattın bu durumda sonunda "tasarım" dır.
Mark

@Mark: Hangi dili kullanıyorsunuz?
Mark Byers

Normal ifadeyi hariç tutan Yahoo Pipes kullanıyorum. Bu soruyu yanıtladım ve şimdi iki nokta üst üste arkasında 6 karakter ve birçok (tümü) ileri doğru seçen bir normal ifade arıyorum ..
Mark

@Mark: Soru listenize baktım ama yenisini göremiyorum. Gönderdiğinizden emin misiniz?
Mark Byers

Bu yeni soruyu birkaç dakika sonra tekrar soracağım. Sanırım sorularımı ayrı tutmak en iyisi ve gerçekten her ikisini de aynı anda sormalıydı. Teşekkürler
Mark

36

İle pozitif Geriye dönük tekniği:

(?<=\?).*

(Burada soru işaretinin olduğu bir metni arıyoruz)

Input: derpderp?mystring blahbeh
Output: mystring blahbeh

Misal

Temel olarak, herhangi bir eşleşme yapılmadan önce kaçılmış soru işareti gerektiren?<= bir grup yapısıdır .

Gerçekten iyi performans gösterirler, ancak tüm uygulamalar onları desteklemez.


13
\?(.*)$

"?" Sonrasındaki tüm karakterleri eşleştirmek istiyorsanız Herhangi bir karakterle eşleştirmek için bir grup kullanabilirsiniz ve satırın sonunu belirtmek için "$" işaretini kullanmanız daha iyi olur.


1
Çoğu normal ifade uygulamasında .varsayılan olarak yeni satır karakteriyle eşleşmez. Sonuç olarak, ifadede satır sonu karakteri olmasa bile satırın sonuna kadar eşleşir.
Mark Byers

2

Bu siteye bir göz atın: http://rubular.com/ Temel olarak site, örnek bir metin girmenize izin verir (sitenizde aradığınız şey) ve ardından normal ifadeyi oluştururken, neyin eşleştiğini vurgulayacaktır. gerçek zaman.


Bunun için teşekkürler, iki nokta üst üste nasıl eşleştirileceğini biliyor musun? Ve iki noktadan önce belirli sayıda karakter var mı?
Mark

/([a-zA-Z]{4}):/eşleşecek Test: Welcomeve kapacakTest
Austin Lin

0

str.replace(/^.+?\"|^.|\".+/, '');

Bu bazen "" arasından başka neyi kaldıracağınızı seçmek istediğinizde kullanmak kötü olabilir ve bir dizede ikiden fazla kullanamazsınız. Yaptığı tek şey "" arasında olmayanları seçmek ve onu "" hiçbir şeyle değiştirmek.

Benim için bile biraz kafa karıştırıcı, ama bunu açıklamaya çalışıyorum. ^.+?(İSTEĞE BAĞLI herhangi bir şey değil) ilk "o zamana kadar |Or / stop (hala ne anlama geldiğini araştırıyor) kadar / at ^., 2. kullanımdan öncesine kadar "( |stop / at) hiçbir şey seçmedi . Ve ardından gelen her şeyi seçin. +.


Lütfen kodunuzun ne yaptığını ve nedenini öğrenmemiz için bir açıklama eklemeyi düşünün.
Balinaların Büyücüsü Pika
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.