Score:0

Ansible: แยกสตริงระหว่างสองสตริง

ธง lc

ดังนั้นฉันจึงมีไฟล์ html ที่มีสิ่งต่อไปนี้อยู่ตรงกลาง:

<span dir="ltr">http:(...).com</span>

ฉันพยายามแยก URL แต่ฉันมีปัญหาบางอย่างในการทำเช่นนั้น เนื่องจาก "ltr" นั้นเป็นตัวเดียวที่มีอยู่ใน html ฉันจึงคิด regex นี้ขึ้นมา:

(?<=ltr">)(.*)(?=<\/span>)

การใช้ regex101 ฉันยืนยันว่านิพจน์ regex ใช้งานได้ อย่างไรก็ตาม เนื่องจากวิธีการจัดการกับเครื่องหมายคำพูดและเครื่องหมายคำพูดคู่ ฉันคิดว่ามันอาจจะทำให้เกิดปัญหาบางอย่าง

ฉันกำลังลองสิ่งนี้:

    - set_fact:
       regex_test: " {{ htmlres.content | regex_search('(?<=ltr">)(.*)(?=<\/span>)') }}"  

โดยที่ htmlres.content คือเนื้อหา html ที่ได้รับจากคำขอรับ http ที่ทำก่อนหน้านี้ใน playbook เดียวกัน อย่างไรก็ตาม เรียกใช้:

    - set_fact:
       regex_pubdest: " {{ htmlres.content | regex_search('(?<=ltr">)(.*)(?=<\/span>)' }}"
                                                                    ^ ที่นี่

มีวิธีใดบ้างที่จะหลีกเลี่ยงปัญหานี้ด้วยเครื่องหมายคำพูดใน regex ใน ansible ฉันจัดการเพื่อให้ได้ผลลัพธ์ที่ต้องการโดยทำสิ่งที่แตกต่างออกไปเล็กน้อย ซึ่งก็คือ:

 เปลือก: grep -oP 'ltr">\K.*?(?=</span>)' /dir/htmlcontent.txt

ปัญหาคือก่อนหน้านี้ใช้ได้เฉพาะเมื่ออ่านจากไฟล์ และฉันพยายามหลีกเลี่ยงการบันทึก html.content ลงในไฟล์ก่อนที่จะส่ง regex ผ่าน ฉันได้ลองแทนที่เส้นทางไปยังโฟลเดอร์ใน grep ด้วย "{{html.content}}" แต่น่าเสียดายที่ทำให้ ansible ทำงานไม่ถูกต้องเนื่องจากเครื่องหมายคำพูด

ความคิดใด ๆ ?

ขอขอบคุณ!

Michael Hampton avatar
cz flag
จะเกิดอะไรขึ้นเมื่อคุณ "วิ่ง" คุณเพิ่งโพสต์งานเดิมอีกครั้ง ฉันคิดว่าคุณได้ละเว้นข้อความสำคัญบางส่วน

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา