Một loại khác nhau của Meta Regex Golf


42

Lưu ý: Theo nhu cầu phổ biến, tôi đã nới lỏng các quy tắc:

  • Kích thước regex tối đa tăng thêm 1 byte cứ sau 5 câu trả lời . Trả lời N có thể sử dụng tối đa 29 + N / 5⌉ byte.
  • Điểm của mỗi câu trả lời sẽ là (M / (30 + N / 5)) N

Trong regex golf, bạn được cung cấp hai bộ dây và được yêu cầu tạo regex ngắn nhất phù hợp với tất cả các chuỗi trong bộ thứ nhất, nhưng thất bại trên tất cả các chuỗi trong bộ thứ hai.

Đó là những gì chúng ta sẽ làm, nhưng mỗi khi ai đó trả lời, chính regex của họ sẽ được thêm vào một trong hai bộ chuỗi (theo lựa chọn của riêng họ). Do đó, có một trật tự nghiêm ngặt để trả lời trong thử thách này.

Chúng ta hãy đi qua một ví dụ:

  • Nói rằng tôi bắt đầu điều này với abc(mà tôi sẽ không) và đặt nó vào bộ khớp .
  • Sau đó, một câu trả lời thứ hai hợp lệ sẽ là a, vì nó phù hợp với câu trả lời ở trên (và không có chuỗi nào cần phải thất bại). Nói câu trả lời này đi trong tập thất bại .
  • Bây giờ câu trả lời thứ ba phải khớp abcnhưng thất bại a. Một câu trả lời thứ ba có thể là do đó b. Hãy đặt điều này trong tập hợp trận đấu .
  • Câu trả lời thứ tư bây giờ phải khớp abcb, nhưng thất bại a. Chúng tôi sẽ không cho phép các câu trả lời trùng lặp, vì vậy một regex hợp lệ sẽ là c|b.

Điều quan trọng là câu trả lời của bạn nên càng ngắn càng tốt. Điều này có thể là tầm thường đối với một vài câu trả lời đầu tiên, nhưng một khi chúng ta nhận được một vài câu trả lời, sẽ càng ngày càng khó hơn để có được trận đấu mong muốn trong càng ít ký tự càng tốt.

Đối với thử thách thực tế, ban đầu bộ khớp chứa PPCGvà bộ thất bại chứa [PPCG], và tôi đã cung cấp câu trả lời đầu tiên.

Trả lời

Điều quan trọng để hiểu về thách thức này là chỉ có một người có thể trả lời tại một thời điểm và mỗi câu trả lời phụ thuộc vào câu hỏi trước nó .

Không bao giờ nên có hai câu trả lời giống nhau N. Nếu hai người tình cờ trả lời đồng thời cho một số người N, thì người trả lời sau (ngay cả khi đó chỉ là một vài giây) nên xóa câu trả lời của họ.

Để làm cho điều này chạy trơn tru hơn một chút, hãy thử làm theo các bước sau khi đăng câu trả lời của bạn:

  • Hãy chắc chắn rằng ai đó đã xác minh độc lập tính chính xác của câu trả lời trước đó (và để lại nhận xét tương ứng).
  • Lấy hai bộ kiểm tra được tìm thấy trong câu trả lời trước và viết một biểu thức chính phù hợp với tất cả các chuỗi trong một bộ và không có bộ nào trong bộ kia.
  • Gửi câu trả lời của bạn ở định dạng sau:

    # N. [regex flavour] - [regex size in bytes]
    
        [regex]
    
    [link to online regex tester]
    
    [notes, explanation, observations, whatever]
    
    ### The next answer has to match the following strings:
    
        [match set]
    
    ### And fail on these strings:
    
        [fail set]
    

    nơi Nlà số câu trả lời của bạn. Vui lòng sao chép [match set][fail set]từ câu trả lời trước đó và nối regex của bạn vào một trong số chúng.

    Điều này là hoàn toàn quan trọng đối với các thách thức! Tôi đã cung cấp một công cụ bảng điều khiển cho thử thách để giúp ghi sổ và nó phụ thuộc vào mẫu trên. (Xem dưới cùng của bài viết.)

  • Một người dùng khác bây giờ nên xem lại bài đăng của bạn và để lại nhận xét "Xác minh chính xác" nếu câu trả lời của bạn tuân theo tất cả các quy tắc (xem bên dưới). Nếu không, họ nên để lại một bình luận chỉ ra bất kỳ sai sót nào. Sau đó, bạn đã có 15 phút để khắc phục những vấn đề đó. Nếu bạn không, câu trả lời của bạn sẽ bị coi là không hợp lệ, nên bị xóa và người khác có thể đăng câu trả lời tiếp theo cho câu trả lời trước đó. (Nếu điều này xảy ra, bạn có thể gửi câu trả lời mới bất cứ lúc nào.)

Các quy định này có vẻ khá nghiêm ngặt, nhưng chúng là cần thiết để tránh các câu trả lời không hợp lệ ở đâu đó trong chuỗi.

Quy tắc

  • Một người dùng chỉ có thể gửi một câu trả lời trong mỗi khoảng thời gian 4 giờ. (Điều này là để ngăn người dùng liên tục xem câu hỏi và trả lời nhiều nhất có thể.)
  • Một người dùng không thể gửi hai câu trả lời liên tiếp. (ví dụ: kể từ khi tôi gửi câu trả lời 1, tôi không thể trả lời 2, nhưng tôi có thể làm 3.)
  • Không chỉnh sửa câu trả lời đã được xác minh. (Ngay cả khi bạn tìm cách rút ngắn nó!)
  • Nếu một lỗi được phát hiện sớm hơn trong chuỗi (tức là sau khi các câu trả lời tiếp theo đã được đăng), câu trả lời vi phạm sẽ bị xóa và sẽ bị xóa khỏi bộ chuỗi mà các bài nộp mới sẽ thất bại. Tuy nhiên , tất cả các câu trả lời đã được đăng từ đó không nên được thay đổi để phản ánh.
  • Rõ ràng nêu rõ một hương vị regex của bạn là hợp lệ. Bạn có thể chọn bất kỳ hương vị nào có thể tự do kiểm tra trực tuyến. Có một danh sách tốt những người thử nghiệm trực tuyến trên StackOverflow . Đặc biệt, Regex101RegexPlanet nên hữu ích, vì chúng hỗ trợ rất nhiều hương vị. Vui lòng bao gồm một liên kết đến người kiểm tra bạn đã chọn trong câu trả lời của bạn. Bằng cách bật công cụ sửa đổi global và multiline trong trình kiểm tra, bạn có thể kiểm tra tất cả các chuỗi cùng một lúc, mỗi chuỗi trên mỗi dòng (các công cụ sửa đổi này không được tính vào kích thước regex của bạn, vì chúng không cần trên bất kỳ chuỗi riêng lẻ nào).
  • Regex của bạn không được để trống
  • Regex của bạn cho câu trả lời N không được dài hơn 29 + ⌈N / 5⌉ byte. Tức là câu trả lời 1 đến 5 có thể sử dụng tối đa 30 byte (bao gồm), câu trả lời 6 đến 10 có thể sử dụng tối đa 31 byte ... câu trả lời 31 đến 35 có thể sử dụng tối đa 36 byte. Kiểm tra bảng điều khiển để xem có bao nhiêu ký tự mà câu trả lời tiếp theo có thể sử dụng.
  • Regex của bạn không được trùng với bất kỳ chuỗi nào trong cả hai bộ kiểm tra.
  • Không bao gồm các dấu phân cách trong trình gửi hoặc số byte của bạn, ngay cả khi ngôn ngữ máy chủ có liên quan sử dụng chúng. Nếu regex của bạn sử dụng công cụ sửa đổi, hãy thêm một byte cho mỗi công cụ sửa đổi vào kích thước regex. Ví dụ /foo/isẽ là 4 byte.

Chấm điểm

Điểm của mỗi câu trả lời được tính là (M / (30 + N / 5)) N , trong đó M là kích thước của biểu thức chính quy theo byte và N là số của nó. Mỗi điểm số của người dùng là sản phẩm của tất cả các câu trả lời của họ. Người dùng có tổng điểm thấp nhất sẽ thắng. Trong trường hợp không thể xảy ra sự ràng buộc, người dùng có bài nộp mới nhất sẽ thắng. Tôi sẽ chấp nhận câu trả lời mới nhất của người dùng đó.

Nếu bạn thích tổng điểm, bạn có thể tính điểm của từng câu trả lời là N * (log (M) - log (30)) và tổng hợp các điểm đó trên tất cả các câu trả lời. Điều đó sẽ đưa ra thứ tự bảng xếp hạng tương tự.

Không cần phải bao gồm điểm của một câu trả lời trong câu trả lời, chỉ cần báo cáo M . Bảng điều khiển thử thách ở cuối câu hỏi sẽ tính điểm và trong trường hợp có hai điểm rất gần, tôi sẽ kiểm tra lại kết quả bằng các loại chính xác tùy ý.

Lưu ý rằng điểm của mỗi câu trả lời nhỏ hơn 1, vì vậy bạn có thể cải thiện điểm tổng thể của mình bằng cách cung cấp câu trả lời mới. Tuy nhiên, mỗi bài nộp của bạn càng ngắn, bạn càng có thể hạ thấp điểm số của mình một cách hiệu quả hơn. Hơn nữa, các câu trả lời sau này có thể đạt được điểm thấp hơn mặc dù dài hơn, do số mũ tăng dần.

bảng điều khiển

Tôi đã viết một công cụ Bảng điều khiển nhỏ, sử dụng Stack Snippets, dựa trên công việc của Trình tối ưu hóa ở đây . Tôi hy vọng điều này sẽ giúp chúng tôi có được một số thứ tự vào những thách thức phụ thuộc vào câu trả lời này.

Điều này sẽ hiển thị trạng thái hiện tại của thử thách - đặc biệt, nếu có câu trả lời mâu thuẫn, nếu câu trả lời cần được xác minh hoặc nếu câu trả lời tiếp theo có thể được đăng.

Nó cũng tạo ra một danh sách tất cả các câu trả lời với điểm số, cũng như bảng xếp hạng của tất cả người dùng. Vui lòng tuân theo định dạng thử thách ở trên, để bảng điều khiển có thể đọc các chuỗi có liên quan từ câu trả lời của bạn. Nếu không, bạn có thể không được bao gồm trong bảng thành tích.

Vui lòng cho tôi biết ( lý tưởng nhất là trong trò chuyện ) nếu bạn phát hiện ra bất kỳ lỗi nào hoặc có một số ý tưởng về tính hữu ích của công cụ có thể được cải thiện.


Các quy tắc hóa ra là một chút nghiêm ngặt hơn tôi dự định. Sau một số cuộc thảo luận trong trò chuyện, tôi đang cân nhắc để nới lỏng các quy tắc một chút sau khi tiền thưởng đã hết. Tôi sẽ đăng 3 bình luận cho các tùy chọn tôi có thể nghĩ ra bên dưới. Vui lòng cho biết sở thích của bạn bằng cách bỏ phiếu trên các ý kiến.
Martin Ender

2
Quy định là quy tắc. Đừng thay đổi chúng. Có thể là một sự xấu hổ khi không thể đăng một câu trả lời khác, nhưng điều đó không biện minh cho việc thay đổi các quy tắc.
Martin Ender

2
Cho phép thêm một byte sau mỗi 10 câu trả lời. Vì lẽ đó, thay đổi số điểm câu trả lời cho (M / (30 + N / 10)) ^ N . Điều này sẽ được áp dụng hồi tố, vì vậy câu trả lời tiếp theo có thể sử dụng tới 32 byte. Sự thay đổi về điểm số sẽ không ảnh hưởng đến hai vị trí hàng đầu trên bảng xếp hạng, nhưng những người dùng khác sẽ bị xáo trộn phần nào.
Martin Ender

8
Cho phép thêm một byte sau mỗi 5 câu trả lời. Vì lẽ đó, thay đổi số điểm câu trả lời cho (M / (30 + N / 5)) ^ N . Điều này sẽ được áp dụng hồi tố, vì vậy câu trả lời tiếp theo có thể sử dụng tới 35 byte. Sự thay đổi về điểm số sẽ không ảnh hưởng đến hai vị trí hàng đầu trên bảng xếp hạng, nhưng những người dùng khác sẽ bị xáo trộn phần nào.
Martin Ender

4
Bạn là người lạ và vặn vẹo. Tại sao bạn lại làm điều này với chính mình? (Thật thú vị khi đọc: P)
Joe

Câu trả lời:


5

42. Hương vị Python - 38

\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Đã thử nghiệm trên Regex101

Việc thiếu entropy trong vài câu trả lời gần đây đã đến với tôi ... (lẽ ra nên làm điều này sớm hơn)

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]
[]^C]\w$|\w.\)|-\$|w[+^]|\?[^w$]*\$$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$
\?[^w$]*\$$|^P|\w.\)|w.?\+|w\^|[^?P]P$

Xác minh đúng.
Martin Ender

Chương trình của tôi đấu tranh để tìm câu trả lời dài dưới 45 ký tự ...
Vi.

@Vi. Chà tôi có thể nói rằng một giải pháp 38 ít nhất tồn tại, nhưng tất nhiên sẽ rất thú vị nếu ai đó quản lý để hạ thấp :)
Sp3000

11

28. Hương vị Python - 29

\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Đã thử nghiệm trên Regex101

Rất nhiều vấn đề xoay quanh đã được thực hiện - Số 4 trong tập hợp vượt qua có lẽ là nỗi đau lớn nhất, vì đó là một chuỗi con của một biểu thức chính trong tập không thành công và cũng chia sẻ một hậu tố với một biểu thức chính khác trong tập không thành công.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Xác minh đúng.
Martin Ender

9

24 - Hương vị Python - 29

^(..[^^].{4,22}\$|[^?]+\w)$|2

Đã thử nghiệm ở đây

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2

1
Xác minh đúng.
frageum

8

10. Hương vị Python - 19

^[\w^]*$|!|]P|G]\$$

Đã thử nghiệm trên Regex101 .

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Xác minh đúng.
FryAmTheEggman

8

8. Hương vị ECMAScript - 14 byte

[^?][PG]$|<|PG

Bản giới thiệu

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG

Xác minh đúng.
FryAmTheEggman

Đã sửa lỗi liên kết demo.
Martin Ender

@FryAmTheEggman Kịch bản không đọc các bình luận, nhưng chỉ tìm "xác minh chính xác" dưới dạng một chuỗi phụ (bỏ qua trường hợp).
Martin Ender

@ MartinBüttner Cảm ơn, rất tốt để biết.
FryAmTheEggman

3
+1 để tự tay thực hiện thử thách này khó hơn 10 lần
Sp3000


7

9. Hương vị Python - 28

^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Đã thử nghiệm trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)*[^\\|]*[^\]]$

Tôi cũng thấy điều này không hoạt động một phút trước. Nó đòi hỏi hai dấu gạch chéo liên tiếp để khớp với nhau vì vậy tôi không nghĩ rằng một lá cờ có thể cứu nó.
frageum

Rất tiếc .... Đáng lẽ phải là * thay vì +. Tôi đã chỉnh sửa câu trả lời của mình
ndc5057

Chính xác xác thực.
FryAmTheEggman

7

23. Hương vị PCRE - 28

([^\\}<]{3}|][^]]|^).?[$PG]$

Đã thử nghiệm trên Regex101.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$

Không gì [^]làm gì?
frageum

@feersum Trong hầu hết các hương vị, ]là yếu tố đầu tiên của lớp nhân vật (sau phủ định tùy chọn), chỉ là một ]lớp bên trong lớp nhân vật và không đóng (vì các lớp ký tự trống là một chút vô nghĩa). Vì vậy, [^]]phù hợp với bất cứ điều gì nhưng ]. Ngoại lệ đáng chú ý là ECMAScript, cho phép các lớp ký tự trống. Trong trường hợp []đó không khớp với bất cứ điều gì, nó hoạt động giống (?!)[^]khớp với bất kỳ ký tự nào, thuận tiện, bởi vì ECMAScript không có công cụ ssửa đổi và [\s\S]rất khó để đọc một lần đọc.
Martin Ender

Xác minh đúng.
Martin Ender

7

11. Con trăn - 29

^(.{,4}|.{9}|.{16,19}|.{5}P)$

► Kiểm tra tại RegexPlanet

Hầu như tất cả các câu trả lời không hợp lệ có độ dài khác với tất cả các câu trả lời hợp lệ. Regex này sử dụng điều đó.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Xác minh đúng.
frageum

7

29. Hương vị PCRE - 28

^..(.[!)3G^w]|$)|\^.{7}$|G\)

Đã thử nghiệm trên Regex101

Câu trả lời này vẫn hoạt động ...

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\

Xác minh đúng.
Martin Ender

1
Đẹp! Chặn lại, chia sẻ chính xác những gì tôi đã có
Sp3000

Tôi đã cố gắng tính toán điều này bằng thuật toán di truyền, nhưng nó chỉ tạo ra regex 30 ký tự ... Bây giờ hãy chạy nó để có câu trả lời tiếp theo. Kết quả hiện tại - 32 ký tự.
Vi.

@Vi Một thuật toán di truyền eh, những ý tưởng thú vị mà bạn có: P
Sp3000

@ Sp3000, Bây giờ 30 ký tự ... Nhưng một anwser khác đã đến, vì vậy cần phải khởi động lại.
Vi.

6

31. Hương vị Perl - 29

[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Tôi không biết nó hoạt động như thế nào, nó được tạo ra bởi bước đột phá đầu tiên của tôi vào algoritms di truyền . Có đầu ra chương trình đề cập đến câu trả lời.

Câu trả lời tiếp theo phải khớp:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

và thất bại:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$

Xác minh đúng.
Martin Ender

Ahaha tốt đẹp - bạn đã sử dụng các câu trả lời trước làm hạt giống cho dân số hay cuối cùng nó trông giống như câu trả lời trước?
Sp3000

Các chuỗi đi qua và thất bại được sử dụng như các khối xây dựng ban đầu. Họ cuốc đã bị cấm sau một thời gian do là tối thiểu địa phương. Bạn có thể thấy nó diễn ra như thế nào trong nhật ký chương trình: số trong ngoặc đơn sau "metric =" là thước đo tốc độ chúng ta sẽ tiến lên. Nó thấp quá lâu, chúng tôi cấm các câu trả lời hiện tại và đặt lại.
Vi.

(Trong khi đó, ứng viên 31 ký tự cho câu trả lời tiếp theo đã được tìm thấy)
Vi.

Oh, giới hạn tăng lên? Không phải 29sao? Bằng cách này, nó sẽ không kết thúc sớm ... Tôi mặc dù thách thức chính là tìm ra bản cuối cùng, bản regex cuối cùng.
Vi.

6

32. PCRE - 30 byte

^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

Đã thử nghiệm trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Và thất bại trên các chuỗi này :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)

1
Xác minh đúng.
Martin Ender

Tại sao nó được thêm vào danh sách "fail"? Bản thân nó đã thất bại, vì vậy có thể đóng vai trò là câu trả lời tiếp theo mà không cần sửa đổi. Tôi cho rằng đối với mỗi câu trả lời, không có lựa chọn nào trong danh sách đó sẽ được thêm vào.
Vi.

3
@Vi. Tôi đoán hôm nay cảm giác thật tuyệt
Sp3000

Tôi sẽ làm cho nó khó hơn khi nó tiếp tục.
HWND

5

1. Hương vị ECMAScript - 2 byte

^P

Kiểm tra nó trên Regex101.

Bộ kết hợp ban đầu là PPCGvà bộ không thành công [PPCG]. Do đó, regex này chỉ đơn giản kiểm tra chuỗi bắt đầu bằng P.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P

Và thất bại trên các chuỗi này:

[PPCG]

3
Xác minh đúng.
Beta Decay

5

3. Hương vị ECMAScript - 6 byte

[^\]]$

Kiểm tra nó ở đây

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$

1
Xác minh đúng.
Beta Decay

5

7. Hương vị Python - 16

(?<!\\..)(?!]).$

Đã thử nghiệm trên Regex101

Phải thêm một \ vào danh sách phù hợp :)

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Xác minh đúng.
NinjaBearMonkey

Điều này thật khó khăn.
wchargein

@WChargin Cảm ơn :) Bạn nên kiểm tra một số câu trả lời của người dùng23013 hoặc n̴̖̋h̷͉̃a̷̭̿h̸̡̅ẗ̵̨́d̷̰̀ĥ̷̳; một số khá 'lệch lạc';)
FryAmTheEggman

5

12. Hương vị ECMAScript - 17

!|[^?]P(CG|G..)?$

Kiểm tra nó ở đây .

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Xác minh đúng.
Martin Ender

5

22. Hương vị PCRE - 29 byte

Vì số 22 ban đầu không được sửa đổi trong 1 giờ, tôi cho rằng nó đã trở nên không hợp lệ.

^.{3,23}[.-~]..\$$|[^P?][PG]$

Bản giới thiệu

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P

1
Xác minh đúng. (Và vâng, đúng vậy, ngày 22 trước đây không hợp lệ.)
Martin Ender

5

26. Hương vị Python - 28

^..(.[!G)(3w^]|.{7}$|$)|\$\?

Kiểm tra trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

Xác minh đúng.
Martin Ender

5

30. Hương vị Python - 28

[[?C(].[-!)|w]|^P|^[^C|\\]*$

Đã thử nghiệm trên Regex101

Khi có ý chí ...

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$

Xác minh đúng.
jimmy23013

5

37. Hương vị Perl - 30

\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Đệ trình trên Regex101 .

Giải pháp được sản xuất bởi cùng một chương trình như trước đây. Chương trình cũng đã in giải pháp 29 ký tự \?[^$w]*\$|[]^C]\w)$|w.]|\w.\, tôi không biết tại sao, vì nó trông giống như một regex không đúng định dạng ...

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)

Xác minh đúng.
Martin Ender

Ahaha Tôi khá khó chịu Tôi đã không nhận được điều này sau khi đến nay với nửa đầu: P
Sp3000

5

40. PCRE - 33 byte

[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Đã thử nghiệm trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)
\w.\)|\?[^-$]*\$$|[]^C]\w$|w[+^]

Và thất bại trên các chuỗi này :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)
\?[^$w]*\$$|[]C^]\w$|w.]|\w.\)
\$..\\|\?[^w$]*\$$|w\^|[]^C]\w$
[]^C]\w$|\w.\)|w[[+^]|\?[^w$]*\$$

Xác minh đúng.
Vi.

1
Tôi có 35 nhưng tôi không hài lòng với nó vì vậy tôi sẽ xem liệu tôi có thể có được thứ gì đó thú vị hơn không
Sp3000

Và tôi có 3 tùy chọn cho câu trả lời gồm 32 ký tự, nhưng toàn bộ thử thách có một chút nhàm chán (đặc biệt là ghi sổ các bài nộp của Regex101 và danh sách các chuỗi thất bại / vượt qua). Nếu ai đó muốn, tôi có thể gửi một câu trả lời.
Vi.


4

5. Hương vị ECMAScript - 6 byte

^[P^]P

Đã thử nghiệm trên Regex101 .

Thời gian để gia vị mọi thứ lên một chút với các thiết lập thành công.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P

Xác minh đúng.
FryAmTheEggman

4

6. Hương vị ECMAScript - 9 byte

[^?][PG]$

Đã thử nghiệm trên Regex101 .

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P

1
Xác minh đúng.
FireFly

4

14. Hương vị PCRE - 25

([.$?]|G\])\$$|^\^?P|\]P$

Đã thử nghiệm trên Regex101

Điều này đang bắt đầu khá khó khăn.

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

Xác minh đúng.
Martin Ender

4

15. Hương vị PCRE - 26

([P.$?]\$|[]^]P|G\]\$|CG)$

Đã thử nghiệm trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$

1
Xác minh đúng.
FireFly

4

16. Hương vị PCRE - 21

^[^?]*[PG]$|[?$].*\$$

Đã thử nghiệm trên Regex 101 .

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$

Nó không phù hợp PPCG.
jimmy23013

@ user23013 đã sửa
es1024

Xác minh đúng.
jimmy23013

4

25. Hương vị PCRE - 29

^(..[^^].{4,22}\$|[^?]+\w)$|~

Đã thử nghiệm ở đây. (Regex thử nghiệm chứa một bổ sung \nđể đảm bảo rằng không có kết quả trùng khớp nào kéo dài nhiều dòng. Điều này không cần thiết để khớp với từng chuỗi riêng lẻ.)

Đó là một quả treo thấp! :) Tôi phải chúc mừng plannapus mặc dù, regex này là thanh lịch đáng kinh ngạc cho các bộ thử nghiệm hiện tại. Nếu bạn muốn nâng cao câu trả lời này, hãy đảm bảo cũng nâng cấp câu trả lời trước đó!

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~

1
Xác minh đúng.
frageum

4

35. PCRE - 35 byte

^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Đã thử nghiệm trên Regex101

Câu trả lời tiếp theo phải khớp với các chuỗi sau :

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)

Và thất bại trên các chuỗi này :

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

Trình xác minh của tôi cho thấy không có lỗi.
Vi.

Xác minh đúng. (@Vi., Bảng điều khiển tìm cụm từ cụ thể này.)
Martin Ender

Tôi mặc dù về việc sử dụng cụm từ đó, nhưng không chắc chắn nếu tôi muốn đưa ra nhận xét của mình có thẩm quyền.
Vi.

Câu trả lời 34 ký tự khác của tôi được đề cập trước đây dường như hoạt động ở đây. Đợi trong 4 giờ (hoặc như thế) ...
Vi.

Tôi không bận tâm đến việc hack - tôi ủy thác nó cho máy tính. Có thể viết một bot đăng câu trả lời bằng API StackExchange? ..
Vi.

4

36. Hương vị Python - 32

\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Đã thử nghiệm trên Regex101

Tôi đã có ba regex 32 byte sẵn sàng và may mắn là một trong số chúng vẫn hoạt động: D

Câu trả lời tiếp theo phải khớp với các chuỗi sau:

PPCG
^P
^[P^]P
[^?][PG]$
(?<!\\..)(?!]).$
^[\w^]*$|!|]P|G]\$$
!|[^?]P(CG|G..)?$
[^])]\$|^\^?P|P.\].$
([.$?]|G\])\$$|^\^?P|\]P$
([P.$?]\$|[]^]P|G\]\$|CG)$
!|((G.|P|\.)\$|[^?]P|CG)$
^[(!P]|G..$|]..\||[^?]P$
^.{3,23}[.-~]..\$$|[^P?][PG]$
^..(.[!G)(3w^]|.{7}$|$)|\$\?
\.\)|P[.$?]|w\^|^[^|C\\]*$|^P
^..(.[!)3G^w]|$)|\^.{7}$|G\)
\?[^w$]*\$$|[]^C]\w+$|w\^|\|..\)

Và thất bại trên các chuỗi này:

[PPCG]
^[P\^]
[^\]]$
^\^?P
[^?][PG]$|<|PG
^[^\\|]*(\\\\)+[^\\|]*[^\]]$
^(.{,4}|.{9}|.{16,19}|.{5}P)$
^[^?]*[PG]$|[?$].*\$$
^[^[]P|]P|(G]|[.])\$$
\..$|!|\|G|^[\^P]P|P\^|G.\$$
...\^.P|^!|G]\$$|w|<!|^\^?P
([^\\}<]{3}|][^]]|^).?[$PG]$
^(..[^^].{4,22}\$|[^?]+\w)$|2
^(..[^^].{4,22}\$|[^?]+\w)$|~
^..(.[!()3G^w]|.{7}$|$)|G\\
[[?C(].[-!)|w]|^P|^[^C|\\]*$
[?[CP(].[-<)|w]|^P|^[^C|\\]*$
^..(.{7}$|.[3Gw!^)]|$)|G.?.?\)
^...[3w!G)]|^[^\\C|]*$|G.?.?\)
^[^C\\|]+$|G.\)|\.\)|w\^|^P|\...?]
^P|!.3|w\^|^[^C\\|]+$|\.[)$-](?!.!)

1
Xác minh đúng.
Martin Ender

Tính chính xác như một biểu thức chính tả Perl cũng được xác minh.
Vi.

Hãy hy vọng câu hỏi không hoạt động cho đến ngày mai, vì tôi có câu trả lời 30 ký tự đang chờ xử lý để đăng.
Vi.
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.