Regex จะแยกรายการสุดท้ายหลังจาก TAB อยู่ในรายการหรือไม่


0

การใช้เอ็นจิ้น Perl regex ฉันไม่สามารถหาวิธีแยกไอเท็มสุดท้ายในบรรทัดที่ไอเท็มถูกแบ่งโดยใช้อักขระ TAB

นี่คือตัวอย่างจากล็อกไฟล์ Process Explorer:

^advapi32.dll\tAdvanced Windows 32 Base API\tMicrosoft Corporation\t5.1.2600.5755\tC:\WINDOWS\system32\advapi32.dll$

ฉันพยายามต่อไปนี้โดยไม่มีประโยชน์:

  • \ t \ w $: "ไม่พบสตริงการค้นหา '\ t \ w $'!" เหมาะสมเป็น "\" ไม่ใช่ นำเข้าบัญชี
  • \ t [^ \ t]. +? $: เริ่มต้นจากคอลัมน์ที่สอง
  • [^ \ t]. +? $: ทั้งบรรทัด

ความคิดใด ๆ

ขอบคุณ.

คำตอบ:


1

ใช้ความโลภของสัญลักษณ์แทน: พวกมันจะกินมากเท่าที่จะทำได้ ตัวอย่างเช่นหากคุณต้องการจับคู่ทั้งบรรทัดให้ใช้: ^.*\t([^\t]+)$. ^.*\t ตรงกับทุกสิ่งที่นำหน้า tab (รวมถึง) และ ([^t]+)$ กลุ่มที่ตรงกับสิ่งที่คุณกำลังมองหา (และคุณสามารถอ้างอิงได้ด้วย $1 ในกรณีนี้).


0

คุณอยู่ไม่ไกล: เรียบง่ายมาก \t[^\t]+$ (หรือ \t([^\t]+)$ หากคุณสามารถจับภาพกลุ่มจากผลลัพธ์ (กลุ่มที่คุณกำลังมองหาอยู่ในวงเล็บ)


ขอบคุณ แต่ฉันลอง "\ t ([^ \ t] +) $" และมันก็แค่เอาอันสุดท้าย \ t ก่อนรายการสุดท้าย
OverTheRainbow

คุณช่วยอธิบายเพิ่มเติมเกี่ยวกับสิ่งที่คุณทำกับ regexp เหล่านี้ได้ไหม? เพราะฉันรับรองคุณได้ว่าอันนี้ตรงกับสิ่งที่คุณต้องการ
Orabîg

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