คำถามติดแท็ก regex

เมื่อถามคำถามเกี่ยวกับ regex ให้เพิ่มแท็กสำหรับภาษาหรือเครื่องมือการเขียนโปรแกรมที่เฉพาะเจาะจง (เช่น Perl, Python หรือ Java; vi, emacs หรือɢɴᴜ grep เป็นต้น) ที่คุณใช้

2
regex ตำแหน่ง Nginx ไม่สามารถใช้งานได้กับการผ่านพรอกซี
ฉันกำลังพยายามทำให้คำสั่งตำแหน่ง 2 ตำแหน่งเหล่านี้ทำงานใน Nginx แต่ฉันได้รับข้อผิดพลาดกลับมาเมื่อทำการบูท Nginx location ~ ^/smx/(test|production) { proxy_pass http://localhost:8181/cxf; } location ~ ^/es/(test|production) { proxy_pass http://localhost:9200/; } นี่เป็นข้อผิดพลาดที่ฉันได้รับ: nginx: [emerg] "proxy_pass" cannot have URI part in location given by regular expression, or inside named location, or inside "if" statement, or inside "limit_except" block มันฟังดูคุ้นหูกับทุกคนไหม? สิ่งที่ฉันหายไปที่นี่
43 nginx  proxy  regex  proxypass 

2
Nginx: ตำแหน่ง regex สำหรับหลายเส้นทาง
ฉันมีสองสถานที่ในการกำหนดค่า nginx ที่ทำงาน: location ^~ /media/ { proxy_pass http://backend.example.com; } location ^~ /static/ { proxy_pass http://backend.example.com; } ฉันจะรวมสองสิ่งนี้เข้าด้วยกันในที่เดียวได้อย่างไร สิ่งที่ฉันทำไปแล้ว: ฉันลองคำแนะนำนี้ location ~ ^/(static|media)/ { proxy_pass http://backend.example.com; } แต่มันไม่ได้ผลสำหรับฉัน นอกจากนี้เมื่อฉันไม่ได้ใช้แบ็กเอนด์การกำหนดค่าต่อไปนี้ทำงานอย่างถูกต้อง: location ~ ^/(static|media)/ { root /home/project_root; } ปรับปรุง (บางสายจากบันทึก) xx.xx.xx.xx - - [31/Dec/2013:13:48:18 +0000] "GET /content/11160/ HTTP/1.1" 200 5310 "-" "Mozilla/5.0 …
30 nginx  regex 

2
สัญลักษณ์ตัวแทน / regex ในพา ธ ตำแหน่ง
config Nginx ฉันมี 404 .phpเช่น: ## Any other attempt to access PHP files returns a 404. location ~* ^.+\.php$ { return 404; } อย่างไรก็ตามฉันมีไฟล์ index.php อยู่ในโฟลเดอร์ย่อยที่ฉันต้องการเรียกใช้ การกำหนดค่าปัจจุบันมีลักษณะดังนี้: location = /sitename/subpage/index.php { fastcgi_pass phpcgi; #where phpcgi is defined to serve the php files } location = /sitename/subpage2/index.php { fastcgi_pass phpcgi; } …
22 nginx  regex  wildcard 


5
ใช้ sed เพื่อลบทั้งการเปิดและปิดวงเล็บเหลี่ยมรอบสตริง
ฉันใช้คำสั่งนี้ใน bash shell บน Ubuntu 12.04.1 LTS ฉันพยายามที่จะลบทั้งตัวละคร[และ]ตัวละครในฉากที่ตกเช่นเดียวโดยไม่ต้องไปปฎิบัติซ้ำอีกครั้ง ฉันรู้ว่าวงเล็บเหลี่ยมมีความหมายพิเศษใน regex ดังนั้นฉันจึงหลบหนีพวกเขาโดยใส่เครื่องหมายแบ็กสแลชไว้ล่วงหน้า ผลลัพธ์ที่ฉันคาดหวังเป็นเพียงสตริง123แต่วงเล็บเหลี่ยมยังคงอยู่และฉันชอบที่จะรู้ว่าทำไม! ~$ echo '[123]' | sed 's/[\[\]]//' [123]
18 bash  regex  sed 

1
Ack ค้นหาสตริงตามตัวอักษร [ปิด]
ปิด. คำถามนี้เป็นคำถามปิดหัวข้อ ไม่ยอมรับคำตอบในขณะนี้ ต้องการปรับปรุงคำถามนี้หรือไม่ อัปเดตคำถามเพื่อให้เป็นไปตามหัวข้อสำหรับข้อบกพร่องของเซิร์ฟเวอร์ ปิดให้บริการใน7 ปีที่ผ่านมา ฉันเบื่อที่จะต้องหลบหนีสิ่งต่าง ๆ เมื่อฉันต้องการค้นหาส่วนหนึ่งของแท็ก html ฉันจะค้นหาสิ่งที่ฉันพิมพ์ได้โดยไม่ต้องหลบหนีจากสิ่งต่างๆได้อย่างไร เช่น ack-grep 'console.log(foo' ฉันเข้าใจ: Unmatched ( in regex; marked by <-- HERE in m/console.log( <-- HERE par/
15 grep  regex 

7
ไม่ต้องการทั้งบรรทัดเพียงแค่การจับคู่จากนิพจน์ทั่วไป
ฉันเพียงแค่ต้องได้รับการแข่งขันจากการแสดงออกปกติ: $ cat myfile.txt | SOMETHING_HERE "/(\w).+/" ผลลัพธ์จะต้องเป็นสิ่งที่ตรงกันภายในวงเล็บ อย่าคิดว่าฉันสามารถใช้grep ได้เพราะมันตรงกับทั้งบรรทัด โปรดแจ้งให้เราทราบวิธีการทำเช่นนี้
15 bash  shell  grep  regex 

1
ข้อผิดพลาด nginx pcre_compile เมื่อใช้ปริมาณ
ฉันมีปัญหากับนามแฝง ฉันต้องการต่อท้ายตัวเลข 4 หลักแรกของไฟล์เป็นส่วนหนึ่งของไดเรกทอรี (เช่น '../123456.jpg'=>'../123/123456.jpg' และ '../12.png'=>'../12/12.png') นี่คือสิ่งที่ฉันมี: location ~ ^/i/gallery2/(\d{1,4})(.*)$ { alias /home/web/images/gallery/$1/$1$2; } นี่เป็นข้อผิดพลาดที่ฉันได้รับ: nginx: [emerg] pcre_compile() failed: missing ) in "^/i/gallery2/(\d" ใครมีความคิดวิธีการทำงานนี้ ดูเหมือนว่าจะมีปัญหากับ "{1,4}" มีวิธีอื่นอีกไหมที่ฉันต้องการ
14 nginx  regex 

1
ฉันจะทำให้วินาทีไม่สนใจการประทับเวลาได้อย่างถูกต้องได้อย่างไร
ฉันมีกฎที่ตั้งขึ้นเช่นนั้น ใน /etc/sec/rules.d ฉันมี type=SingleWithSuppress ptype=regexp pattern=(\S+) sshd\[\d+\]: PAM \d+ more authentication failures\; logname=.* uid=.* euid=.* tty=ssh ruser=.* rhost=(.*) user=(.*) desc=Login Failure: $0 action=pipe '%s ' /bin/mail -s "login failure $2 to $3@$1" team@team.com window=300 ดังนั้นถ้าสิ่งนี้มาถึง syslog; Nov 21 11:24:10 servername.server.com sshd[26846]: PAM 2 more authentication failures; logname= uid=0 euid=0 …
13 linux  logging  syslog  regex 

3
nginx เขียนใหม่ต่อท้ายพารามิเตอร์ที่ท้าย url
ฉันต้องกำหนดค่าพร็อกซีย้อนกลับของฉันเพื่อที่จะเพิ่มพารามิเตอร์ต่อไปนี้ในตอนท้ายของ url: &locale=de-de เกือบจะใช้งานได้: rewrite ^(.*)$ $1&locale=de-de break; อย่างไรก็ตามปัญหาคือฉันต้องผนวก '& locale = de-de' เฉพาะเมื่อยังไม่มีอยู่และถ้ามี '?' ใน URL ... ฉันสามารถขอความช่วยเหลือในการกำหนด regex ที่ถูกต้องเพื่อทำสิ่งนี้ได้ไหม? คำถามอื่น: ทำไมเครื่องหมายคำถามใน URL ของฉันไม่แสดงถ้าฉันใช้สิ่งนี้: $ uri? $ args หรือ $ uri $ is_args $ args แปล URL ที่ไม่ได้เข้ารหัสและเครื่องหมายคำถามจะแสดงเป็น% 3f ไอเดีย? แก้ไข: ดูเหมือนว่าพฤติกรรมนี้มีอยู่ในขณะที่ใช้ร่วมกับ proxy_pass ในการเขียนง่าย ๆ มันใช้งานได้ดีจริงๆ
13 nginx  regex 

1
ข้อ จำกัด PCRE คืออะไร
ใน ModSecurity มีPCRE limits exceededข้อผิดพลาด ฉันรู้ว่าฉันสามารถแก้ไขได้โดยการตั้งกฎเช่น: SecPcreMatchLimit 150000 SecPcreMatchLimitRecursion 150000 แต่กฎเหล่านี้กำลังทำอะไรอยู่? PCRE จำกัด การเรียกซ้ำที่ตั้งค่าเป็น 150,000 หมายถึงอะไร ฉันอนุญาตให้มีการรักษาความปลอดภัยใดโดยการตั้งค่าระดับสูงเหล่านี้ อะไรrecursionและlimitหมายความว่าอย่างไร ฉันรู้ว่ามีเอกสาร แต่เอกสารไม่ได้บอกฉันจริงว่าเกิดอะไรขึ้นฉันแค่บอกวิธีทำงานกับคำสั่ง

1
Nginx เปลี่ยนเส้นทางโดเมนย่อยโดเมนเก่าทั้งหมดไปยังโดเมนใหม่
ฉันมีโดเมนที่ยาวมากดังนั้นฉันจึงตัดสินใจเปลี่ยนเป็นโดเมนที่สั้นและเป็นมิตรมากขึ้น แต่เนื่องจากฉันมีโดเมนย่อยจำนวนมาก (อันที่จริงฉันมีโดเมนย่อย) จึงต้องการเก็บโดเมนย่อยไว้ขณะที่เปลี่ยนเฉพาะส่วนโดเมน ดังนั้นฉันทำกฎต่อไปนี้: server { listen 80; server_name ~^(\w+)\.olddomain\.com$; rewrite ^ $scheme://$1.doma.in$request_uri? permanent; } ฉันได้อ่านคำถามอื่น ๆ มากมายซึ่งข้อมูลโค้ดนี้แก้ไขปัญหาได้ แต่สำหรับฉัน Nginx จะเปลี่ยนเส้นทางไปยังเสมอ.domain.inโดยไม่มีโดเมนย่อยใด ๆ ฉันกำลังคิดถึงอะไร ฉันได้ทดสอบ regex เทียบกับ regex101 และตัวอย่างทำงานได้ดี Nginx ดูเหมือนจะไม่สามารถเปลี่ยนเส้นทางได้

2
grepping สำหรับช่วง CIDR
บางครั้งฉันต้องการ grep CIDR ออกจากไฟล์บันทึก Apache ของฉัน สิ่งนี้เป็นเรื่องง่ายสำหรับช่วงที่อยู่ในขอบเขตธรรมชาติ (/ 8, / 16 และ / 24) แต่ไม่ใช่เรื่องง่ายสำหรับช่วงอื่นเช่น / 17 และ / 25 ตัวอย่าง: # 192.168.0.0/16: (easy) grep " 192\.168\." access_log # 192.168.128.0/17: (more thought required) grep -E " 192\.168\.(12[89]|1[3-9][0-9]|2[0-5][0-9])\." access_log # 192.168.0.0/17: (more thought required) grep -E " 192\.168\.([0-9]|[0-9][0-9]|1[01][0-9]|12[0-7])\." access_log # 192.168.128.0/18: …
10 ip  regex  grep  cidr 

2
วิธีการยกเว้นไฟล์จากการเก็บถาวร TAR โดยใช้การแสดงออกปกติ?
ฉันมีคำถามง่าย ๆ แต่ฉันไม่สามารถค้นหาหรือแก้ไขคำตอบได้ ฉันต้องการสร้างไฟล์เก็บถาวร tar แต่ฉันต้องการแยกไฟล์บางไฟล์ออกโดยใช้นิพจน์ทั่วไป ตัวอย่างของไฟล์ที่จะยกเว้นคือ: 68x640X480.jpg ฉันได้ลองทำสิ่งนี้โดยไม่มีโชค: tar cvf test.tar --exclude=[0-9]+x[0-9X]+\.jpg /data/foto ใครช่วยได้บ้าง
10 linux  tar  regex  archive 

4
ค้นหาตัวอักษร“> \” โดยใช้ ack-grep
ฉันกำลังมองหาบรรทัดที่มีตัวอักษรมากกว่า (a ">") ตามด้วยช่องว่างตามด้วยอักขระเครื่องหมายทับขวา (a "\") เช่นบรรทัดที่มี:> \ ฉันคิดว่าการหลบหนีจะยอมให้สิ่งนี้และสำหรับสิ่งที่ยิ่งใหญ่กว่านั้น: $ ack-grep "\>" ส่งคืนบรรทัดที่มี ">" อยู่ในรายการ แต่เมื่อฉันพยายามหนีแบ็กสแลชเช่นกันฉันจะได้รับ: $ ack-grep "\> \\" ack-grep: regex ไม่ถูกต้อง '\> \': Trailing \ in regex m / \> /
9 grep  regex  escaping 

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