Раннее утроГремячий ключ - Святой ключ

Регулярка для выделения строк в кавычках

(?:(["'])|(“)|‘).*?(?<!\\)(?(1)\1|(?(2)”|’))

Comments (8):

    • honeyman
    • 17.02.2007 15:43
    • Нижний Новгород / Нижегородская область
    Лучше /ex добавлять - тогда их ещё комментировать можно будет.
    $Message =~ s{                                   # --- FIND: email links
        \b                                           # Word boundary
        (                                            # #
            [\w\.\-\%]+                              # Username
            \@                                       # "@"
            [\w\.\-\%]+                              # Second-level domain, may be absent
            # #
            #   First-level domain, must exist
            \.
            (?:
                ad|ae|af|ag|ai|al|am|an|ao|aq|ar|as|at|au|aw|az|
                ba|bb|bd|be|bf|bg|bh|bi|bj|bm|bn|bo|br|bs|bt|bv|
                bw|by|bz|ca|cc|cf|cg|ch|ci|ck|cl|cm|cn|co|cr|cs|
                cu|cv|cx|cy|cz|de|dj|dk|dm|do|dz|ec|ee|eg|eh|er|
                es|et|fi|fj|fk|fm|fo|fr|fx|ga|gb|gd|ge|gf|gh|gi|
                gl|gm|gn|gp|gq|gr|gs|gt|gu|gw|gy|hk|hm|hn|hr|ht|
                hu|id|ie|il|in|io|iq|ir|is|it|jm|jo|jp|ke|kg|kh|
                ki|km|kn|kp|kr|kw|ky|kz|la|lb|lc|li|lk|lr|ls|lt|
                lu|lv|ly|ma|mc|md|mg|mh|mk|ml|mm|mn|mo|mp|mq|mr|
                ms|mt|mu|mv|mw|mx|my|mz|na|nc|ne|nf|ng|ni|nl|no|
                np|nr|nt|nu|nz|om|pa|pe|pf|pg|ph|pk|pl|pm|pn|pr|
                pt|pw|py|qa|re|ro|ru|rw|sa|sb|sc|sd|se|sg|sh|si|
                sj|sk|sl|sm|sn|so|sr|st|su|sv|sy|sz|tc|td|tf|tg|
                th|tj|tk|tm|tn|to|tp|tr|tt|tv|tw|tz|ua|ug|uk|um|
                us|uy|uz|va|vc|ve|vg|vi|vn|vu|wf|ws|ye|yt|yu|za|
                zm|zr|zw|com|edu|gov|int|mil|net|org|arpa|nato
            )
                                                     # #
        )                                            # #
        \b                                           # Word boundary
        }{                                           # --- REPLACE ---
        "<a href='mailto:$1' " .                     # <A
            "title='Click to send email to $1'>" .   #     TITLE>
        $1 .                                         # Link text
        "<\/a>"                                      # <A>
        }egx;                                        # e - Evaluate the right side as an expression.
                                                     # g - Replace globally, i.e., all occurrences.
                                                     # x - Use extended regular expressions.
    
    • не угадал, медовый... это регулярка другое делает
        • honeyman
        • 17.02.2007 15:47
        • Нижний Новгород / Нижегородская область
        Разумеется, другое. Я некомментированные регекспы даже читать не собираюсь. Я просто пример привёл, как их можно комментировать.
        • и отлично, что не собираешься. хороший метод писать программы, которые будешь править только ты сам :))
            • honeyman
            • 17.02.2007 15:51
            • Нижний Новгород / Нижегородская область
            Это точно. За нечитабельность многие перл (и в т.ч. регекспы) не любят.
            Впрочем, в приличных компаниях не любят программистов, которые пишут нечитабельные программы :) Поэтому там волей-неволей приходится писать понятно и документированно. Даже на Перле :)
  • Найти текст между каким либо видом ковычек где раньше нет слеша("(?
  • Обрезал коммент за обилие регулярок :-D)
    Имхо регулярка для закрытия ковычек. Но мне кажется она работать не будет bk.gif Или как минимум должен быть еще один блок на ковычки до негативной ретроспективной проверки(которая как я понимаю нужна чтоб не заменять экранированные ковычки?)
    • это регулярка для взятия текста между одним типом любого типа кавычек.