นิพจน์ทั่วไป: จับคู่คำใดก็ได้จนกระทั่งเว้นวรรคแรก


145

ฉันมีบรรทัดต่อไปนี้:

hshd    household   8/29/2007   LB

ฉันต้องการจับคู่สิ่งใดที่อยู่ก่อนช่องว่างแรก (ช่องว่าง) ดังนั้นในกรณีนี้ฉันต้องการกลับไป

hshd

2
มีอะไรผิดปกติกับการแยกและรับ elem แรก?
Avinash Raj

คำตอบ:


319
([^\s]+)

โรงงาน


21
ฉันจะต่อเติม ^ เพื่อให้ได้คำแรกเท่านั้น
Soulmerge

1
ในขณะที่ถูกต้องโดยทั่วไปฉันคิดว่าความจำเป็นในการใช้งานนั้น^ขึ้นอยู่กับการใช้ภาษาหรือ regexp ตัวอย่างเช่นใน Python ที่คุณจะใช้re.matchสำหรับงานนี้
SilentGhost

5
สิ่งนี้ตรงกับคำทั้งหมดไม่ใช่เฉพาะคำแรกเท่านั้นดูตัวอย่างนี้
Ryan Gates

1
@RyanGates ยกเลิกการเลือกทั่วโลกและคุณจะเห็นว่ามันทำงานได้ตามที่ตั้งใจและคาดหวัง อ้างถึง SilentGhost สำหรับหมายเหตุเกี่ยวกับการใช้งานภาษาหากคุณยังมีปัญหา
Volvox

1
@ Volvox ขอบคุณฉันพลาดนั่น
Ryan Gates


12

บางทีคุณอาจลอง([^ ]+) .*ซึ่งจะให้ทุกอย่างแก่คุณในกลุ่มแรก


@ire_and_curses บน Sublime Text ที่จะข้ามคำสุดท้ายในบรรทัด ด้วยเหตุผลบางอย่างสิ่งนี้ไม่ได้: ([^]) +
hello_there_andy




1

ฉันคิดว่าคำถูกสร้างขึ้นด้วยตัวอักษรมากกว่าหนึ่งตัว คำแนะนำของฉันคือ:

[^\s\s$]{2,}

-2

^ ([^ \ s] +) ใช้สิ่งนี้ให้ถูกต้องตรงกับคำแรกที่คุณสามารถทดสอบได้โดยใช้ลิงก์นี้ https://regex101.com/


มันมาจากคำตอบนั้น
darshan

จากนั้นอธิบายว่าทำไมคุณจึงคิดว่าจำเป็นต้องมีคำตอบใหม่และอธิบายความแตกต่างที่เป็นไปได้ แต่คุณจะพบว่าได้มีการพูดคุยกันแล้วในความคิดเห็นเกี่ยวกับคำตอบที่ยอมรับ นอกจากนี้ได้รับการโหวตสูงสุดเป็นอันดับสองคำตอบคือค่อนข้างคล้ายกัน แต่ค่อนข้างหรูหรามากขึ้นในการที่จะชอบง่าย\Sกว่าเทียบเท่า [^\s]แต่อุ้ยอ้าย
tripleee
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.