Найдено результатов: 32

Easy-to-Use поддержка регулярных выражений в C++?

Я ищу надежный, easy-to-use, оценщик регулярных выражений для native C++, либо независимый от платформы, либо специфичный для Windows.

Требования:

  • Не могу использовать библиотеки Boost или ACE regex (к сожалению)
  • Не удается использовать .NET Regex (или любой управляемый код)

Главное требование - чтобы он был автономным и открытым.

c++   regex    

455   10   16:03, 1st July, 2020


Regex: чтобы вытащить подстроку между двумя тегами в строке

У меня есть файл в следующем формате:

Data Data
Data
[Start]
Data I want
[End]
Data

Я хотел бы захватить Data I want из промежутка между тегами [Start] и [End] , используя Regex. Может ли кто-нибудь показать мне, как это можно сделать?

regex   parsing    

482   9   16:03, 1st July, 2020


Как я могу получить совпадения при использовании preg_replace в PHP?

Я пытаюсь схватить заглавные буквы нескольких слов и обернуть их в теги span. Я использую preg_replace для извлечения и упаковки, но он ничего не выводит.

preg_replace("/[A-Z]/", "<span class=\"initial\">$1</span>", $str)

php   regex   html-parsing   preg-replace    

494   4   16:03, 1st July, 2020


Изучение Регулярных Выражений

Я действительно не понимаю регулярных выражений. Можете ли вы объяснить мне их в манере easy-to-follow? Если есть какие-либо онлайн-инструменты или книги, не могли бы вы также ссылаться на них?

regex    

584   1   16:03, 1st July, 2020


Почему это регулярное выражение быстрее?

Я пишу своего рода клиент Telnet в C#, и часть того, что мне нужно разобрать, - это escape-последовательности ANSI/VT100, в частности, только те, которые используются для цвета и форматирования (подробно здесь ).

Один из методов, который у меня есть, - это найти все коды и удалить их, чтобы я мог отображать текст без форматирования, если это необходимо:

    
public static string StripStringFormating(string formattedString)
{
    if (rTest.IsMatch(formattedString))
        return rTest.Replace(formattedString, string.Empty);
    else
        return formattedString;
}

Я новичок в регулярных выражениях, и мне было предложено использовать это:

static Regex rText = new Regex(@"\e\[[\d;]+m", RegexOptions.Compiled);

Однако это не удалось, если escape-код был неполным из-за ошибки на сервере. Итак, это было предложено, но мой друг предупредил, что это может быть медленнее (это также соответствует другому условию (z) , с которым я могу столкнуться позже):

static Regex rTest = 
              new Regex(@"(\e(\[([\d;]*[mz]?))?)?", RegexOptions.Compiled);

Это не только сработало, но и было на самом деле быстрее и уменьшило влияние на мой текстовый рендеринг. Может кто-нибудь объяснить новичку regexp, почему? :)

regex   ansi    

465   4   16:03, 1st July, 2020


Что такое хорошие регулярные выражения?

Я работал в течение 5 лет в основном в java настольных приложениях, получающих доступ к Oracle базам данных, и я никогда не использовал регулярные выражения. Теперь я ввожу Stack Overflow и вижу много вопросов о них; я чувствую, что что-то пропустил.

Для чего вы используете регулярные выражения?

P.S. извините за мой плохой английский

regex    

335   9   16:03, 1st July, 2020


Как привязать регулярное выражение к комбинации клавиш в emacs?

Для контекста я что-то вроде Новичка emacs. Я не использовал его очень долго, но использую его все больше и больше (мне это очень нравится). Также мне комфортно с lisp, но не очень хорошо знаком с elisp.

То, что мне нужно сделать, это привязать регулярное выражение к комбинации клавиш, потому что я использую этот конкретный regex так часто.

То, что я делал:

M-C-s ^.*Table\(\(.*\n\)*?GO\)

Обратите внимание, что я использовал новую строку выше , но я обнаружил, что для isearch-forward-regexp вам действительно нужно заменить \n в регулярном выражении на результат C-q Q-j . Это вставляет литеральную новую строку (без завершения команды), позволяя мне поместить новую строку в выражение и сопоставить строки.

Как я могу привязать это к комбинации клавиш?

Я смутно понимаю, что мне нужно создать функцию elisp, которая выполняет isearch-forward-regexp с выражением, но я нечетко разбираюсь в деталях. Я поискал в гугле и нашел большинство документов, которые должны быть немного запутанным.

Как я могу привязать регулярное выражение к комбинации клавиш в emacs?


У Майка Стоуна был лучший ответ на данный момент-не совсем то, что я искал, но он работал для того, что мне нужно

Edit-этот вид работал, но после сохранения макроса, когда я вернулся, чтобы использовать его позже, я не мог использовать его с C-x e . (т. е., если я перезагружаю emacs, а затем набираю M-x macro-name, а затем C-x e , я получаю сообщение в минибуфере, например "нет последнего макроса kbd" или что-то подобное)


@Mike камень-Спасибо за информацию. Я попытался создать макрос вот так:

C-x( M-C-s ^.*Table\(\(.*C-q C-J\)*?GO\) C-x)

Это создало мой макрос, но когда я выполнил свой макрос, я не получил того же выделения, которое я обычно получаю, когда использую isearch-forward-regexp . Вместо этого он просто перескочил к концу следующего матча выражения. Так что это действительно не работает для того, что мне нужно. Есть идеи?

Edit: похоже, я могу использовать macros, чтобы делать то, что я хочу, мне просто нужно думать вне коробки isearch-forward-regexp . Я попробую то, что вы предложили.

regex   emacs   lisp    

433   4   11:10, 4th August, 2020


Regex отклонение совпадений из-за Instr

Каков самый простой способ сделать функцию типа "instring" с помощью regex? Например, как я могу отклонить целую строку из-за наличия одного символа, такого как : ? Например:

  • this -хорошо
  • there:is - не в порядке из-за :

Более практично, как я могу сопоставить следующую строку:

//foo/bar/baz[1]/ns:foo2/@attr/text()

Для любого теста узла на xpath, который не включает пространство имен?

(/)?(/)([^:/]+) 

Будет соответствовать тестам узла, но включает префикс пространства имен, который делает его неисправным.

regex   xpath    

399   5   05:52, 12th August, 2020


Назначение {1} в этом регулярном выражении для сопоставления протоколов url

Я читал этот вопрос о том, как разобрать URLs из веб-страниц и имел вопрос о принятом ответе , который предлагал это решение:

((mailto\:|(news|(ht|f)tp(s?))\://){1}\S+)

Решение было предложено csmba , и он приписал его regexlib.com . Вот так так. Кредиты сделаны.

Я думаю, что это довольно наивное регулярное выражение, но это прекрасная отправная точка для создания чего-то лучшего. Но, мой вопрос заключается в следующем:

В чем смысл {1} ? Это означает "точно одна из предыдущих группировок", верно? Разве это не поведение по умолчанию группировки в регулярном выражении? Будет ли выражение изменено каким-либо образом, если {1} будет удален?

Если бы я увидел это от коллеги, я бы указал на его ошибку, но когда я пишу это, ответ оценивается в 6, а выражение на regexlib.com оценивается как 4 из 5. Так, может быть, я что-то упустил?

regex    

512   4   12:25, 12th August, 2020


Python регулярных выражений для выполнения строки невыход

Я пытаюсь реализовать строку unescaping с Python regex и обратными ссылками, и это, кажется, не хочет работать очень хорошо. Я уверен, что это то, что я делаю неправильно, но я не могу понять, что именно...

>>> import re
>>> mystring = r"This is \n a test \r"
>>> p = re.compile( "\\\\(\\S)" )
>>> p.sub( "\\1", mystring )
'This is n a test r'
>>> p.sub( "\\\\\\1", mystring )
'This is \\n a test \\r'
>>> p.sub( "\\\\1", mystring )
'This is \\1 a test \\1'

Я хотел бы заменить \\[char] на \[char], но обратные ссылки в Python, похоже, не следуют тем же правилам, что и в любой другой реализации, которую я когда-либо использовал. Может кто-нибудь пролить свет?

python   regex   backreference    

480   5   08:28, 19th August, 2020


Есть ли модуль python для сопоставления regex в файлах zip

У меня есть более миллиона текстовых файлов, сжатых в 40 zip файлов. У меня также есть список из около 500 наименований моделей телефонов. Я хочу узнать, сколько раз конкретная модель была упомянута в текстовых файлах.

Есть ли какой-либо модуль python, который может выполнить сопоставление regex с файлами, не распаковывая его. Есть ли простой способ решить эту проблему без распаковки?

python   regex   zip   text-processing    

535   4   06:12, 16th August, 2020


Как написать regex, чтобы вернуть только определенные части этой строки?

Поэтому я работаю над проектом, который позволит пользователям вводить истории покерных рук с таких сайтов, как PokerStars, а затем отображать им руку.

Кажется, что regex будет отличным инструментом для этого, однако я оцениваю свои знания regex на "slim to none".

Поэтому я использую PHP и перебираю этот блок текста строка за строкой и по строкам, как это:

Seat 1: fabulous29 (835 in chips)

Seat 2: Nioreh_21 (6465 in chips)

Seat 3: Big Loads (3465 in chips)

Seat 4: Sauchie (2060 in chips)

Я хочу извлечь seat number, name, & chip count , поэтому формат

Seat [number]: [letters&numbers&characters] ([number] in chips)

Я понятия не имею, с чего начать или какие команды я должен даже использовать для оптимизации этого.

Любые советы очень ценятся - даже если это просто ссылка на учебник по PHP regex или имя команды(команд), которую я должен использовать.

php   regex    

558   11   18:33, 28th August, 2020


Как вы используете обратные ссылки на PCREs в PHP?

Я читаю эту страницу PHP RegEx, но либо я что-то упускаю, неправильно читаю что-то, или это не работает так, как они говорят. Я предполагаю, что это один из первых двух.

$str = preg_replace("([|]\d*)", "\1;", $str);

php   regex    

390   1   21:42, 28th August, 2020


Что я здесь сделал не так? [Javascript Regex]

Поэтому я пишу регистрационную форму, и мне нужно, чтобы отображаемое имя было только цифрами, буквами и подчеркиваниями.

Посмотрите на мой код и скажите мне, что я делаю неправильно.

<form method="post" action="/" onsubmit="return check_form()">
    <input type="text" id="display-name" name="display-name" maxlength="255" />
    <input type="submit" />
</form>
<script type="text/javascript">
<!--
    var name_regex = /^([a-zA-Z0-9_])+/

    function check_form()
    {
        if (!name_regex.test(document.forms[0].elements[0].value))
        {
            document.forms[0].elements[0].focus()
            alert("Your display name may only contain letters, numbers and underscores")
            return false
        }
    }
-->
</script>

Очевидно, что он был обрезан, чтобы не включать ничего, не связанного с проблемой, но даже этот фрагмент не работает.

javascript   regex    

442   8   04:24, 25th August, 2020


Алгоритм для выполнения вычисления RFC в Java

RFC для класса Java-это набор всех методов, которые могут быть вызваны в ответ на сообщение объекту класса или каким-либо методом в классе. RFC = M + R, где M = количество методов в классе. R = общее число других методов, непосредственно вызываемых из M.

Мышление C-это то .класс и J-это то .java файл, из которого нам нужно вычислить RFC.

class J{

 a(){}
 b(){}
 c(){
   e1.e();
   e1.f();
   e1.g();
 }
 h(){
   i.k();
   i.j();
  }
  m(){}
  n(){
   i.o();
   i.p();
   i.p();
   i.p();
  }
}

здесь M=6 и R=9 (Не беспокойтесь о вызове внутри цикла. Это рассматривается как один вызов)

Вычисление M легко. Загрузите C с помощью загрузчика классов и используйте отражение, чтобы получить количество методов.

Вычисление R не является прямым. Нам нужно подсчитать количество вызовов метода из класса. Только первый уровень.

Для вычисления R я должен использовать regex. Обычно формат будет (вызовы без использования . не учитываются)

[variable_name].[method_name]([zero or more parameters]);

или

[variable_name].[method_name]([zero or more parameters])

без точки с запятой, когда возврат вызова напрямую становится параметром для другого метода. или

[variable_name].[method_name]([zero or more parameters]).method2();

это становится двумя вызовами метода

Какие еще шаблоны вызова метода вы можете придумать? Есть ли другой способ, кроме использования RegEx, который может быть использован для вычисления R.


UPDATE:
@McDowell похоже, что с помощью BCEL я могу упростить весь процесс. Дай мне попробовать.

java   regex   algorithm   reflection    

554   4   20:01, 19th August, 2020


Сложность замены Regex

Ответа на этот вопрос я нигде не получил. Какова сложность выполнения Regex-го совпадения и замены?

Edit: я работаю в python. Но хотелось бы знать в целом о самых популярных языках / инструментах (java, perl, sed).

regex   complexity-theory    

481   7   02:04, 29th August, 2020


Использование Regex для генерации строк, а не для их сопоставления

Я пишу утилиту Java, которая помогает мне генерировать множество данных для тестирования производительности. Было бы действительно здорово иметь возможность указать regex для строк, чтобы мой генератор выплевывал вещи, которые соответствуют этому. Есть ли там что-то уже испеченное, что я могу использовать для этого? Или есть библиотека, которая доставляет меня туда большую часть пути?

Спасибо

java   regex    

755   11   11:36, 4th August, 2020


Мой regex слишком сильно совпадает. Как мне заставить его остановиться?

J0000000: Transaction A0001401 started on 8/22/2008 9:49:29 AM
J0000010: Project name: E:\foo.pf
J0000011: Job name: MBiek Direct Mail Test
J0000020: Document 1 - Completed successfully

У меня есть эта гигантская уродливая строка, и я пытаюсь извлечь из нее кусочки, используя regex.

В этом случае я хочу захватить все после "Project Name" до той части, где он говорит "J0000011:" (11 будет каждый раз другим числом).

Вот тот regex, с которым я играл

Project name:\s+(.*)\s+J[0-9]{7}:

Проблема в том, что он не останавливается, пока не достигнет J0000020: в конце.

Как заставить regex остановиться при первом появлении J[0-9]{7} ?

regex    

481   5   10:25, 13th August, 2020


Прохождение с комментарием, мульти-линии (свободного пространства) regex для функции preg_match

У меня есть regex, который в конечном итоге будет немного длинным, и это сделает его намного легче читать, чтобы иметь его через несколько строк.

Я пробовал это, но меня просто тошнит.

preg_match(
    '^J[0-9]{7}:\s+
    (.*?)             #Extract the Transaction Start Date msg
    \s+J[0-9]{7}:\s+Project\sname:\s+
    (.*?)             #Extract the Project Name
    \s+J[0-9]{7}:\s+Job\sname:\s+
    (.*?)             #Extract the Job Name
    \s+J[0-9]{7}:\s+',
    $this->getResultVar('FullMessage'),
    $atmp
);

Есть ли способ передать regex в приведенной выше форме preg_match?

php   regex    

413   5   14:00, 17th August, 2020


Как выполнить подстановку Perl в строке, сохраняя при этом оригинал?

В Perl, какой хороший способ выполнить замену строки с помощью регулярного выражения и сохранить значение в другой переменной, не изменяя оригинал?

Обычно я просто копирую строку в новую переменную, а затем привязываю ее к s/// regex, который делает замену на новую строку, но мне было интересно, есть ли лучший способ сделать это?

$newstring = $oldstring;
$newstring =~ s/foo/bar/g;

regex   perl   replace    

404   7   04:29, 4th August, 2020


Краткое описание различий в синтаксисе регулярных выражений для различных инструментов и языков?

Я никогда не могу вспомнить различия в синтаксисе регулярных выражений , используемых инструментами типа grep и AWK, или языками типа Python и PHP. Как правило, Perl имеет самый обширный синтаксис, но меня часто ограничивают ограничения даже egrep ("extended" grep ).

Есть ли сайт, который перечисляет различия в краткой и easy-to-read моде?

regex   grep    

400   3   16:55, 8th August, 2020


Лучше всего regex поймать атаку XSS (Межсайтовый сценарий) (в Java)?

Джефф действительно написал об этом в Sanitize HTML . Но его пример находится в C#, и я на самом деле больше заинтересован в версии Java. У кого-нибудь есть лучшая версия для Java? Достаточно ли хорош его пример, чтобы просто преобразовать непосредственно из C# в Java?

[Update] я поставил награду за этот вопрос, потому что SO не был так популярен, когда я задавал этот вопрос, как сегодня (*). Что же касается всего, что связано с безопасностью, то чем больше людей в нее заглядывают, тем лучше!

(*) На самом деле, я думаю, что он все еще был в закрытом бета-тестировании

java   html   regex   xss    

502   9   03:01, 6th August, 2020


Объединение значений из разных файлов в один файл CSV

У меня есть несколько файлов, содержащих значение в каждой строке.

EDIT :

Я понял ответ на этот вопрос, когда писал сообщение, и не понял, что я отправил его по ошибке в неполном состоянии.

Я пытался это сделать:

paste -d ',' file1 file2 file 3 file 4 > file5.csv

и получал странный выход. Позже я понял, что это происходит, потому что некоторые файлы имели как возврат каретки, так и символ новой строки в конце строки, в то время как другие имели только символ новой строки. Я всегда должен помнить, что нужно обращать внимание на такие вещи.

regex   linux   unix   shell    

533   5   18:55, 14th August, 2020


Как переполнение стека генерирует свой SEO-дружественный URLs?

Что такое хорошее полное регулярное выражение или какой-то другой процесс, который взял бы название:

Как изменить заголовок, чтобы он был частью URL, как переполнение стека?

и превратить его в

how-do-you-change-a-title-to-be-part-of-the-url-like-stack-overflow

то есть используется в SEO-дружественном URLs на Stack Overflow?

Среда разработки, которую я использую, является Ruby на Rails, но если есть какие-то другие решения для конкретной платформы (.NET, PHP, Django), я бы тоже хотел их увидеть.

Я уверен, что я (или другой читатель) столкнусь с той же проблемой на другой платформе в будущем.

Я использую пользовательские маршруты, и я в основном хочу знать, как изменить строку, чтобы все специальные символы были удалены, все это строчные буквы, и все whitespace заменено.

regex   language-agnostic   seo   friendly-url   slug    

499   1   10:42, 5th August, 2020


Захват повторяющейся группы

Я пытаюсь разобрать строку следующим образом, используя регулярное выражение .NET:

H3Y5NC8E-TGA5B6SB-2NVAQ4E0

и вернуть после использования Сплит: H3Y5NC8E TGA5B6SB 2NVAQ4E0

Я проверяю каждый символ по определенному набору символов (обратите внимание, что буквы 'I', 'O', 'U' & 'W' отсутствуют), поэтому использование string.Split не является опцией. Количество символов в каждой группе может варьироваться, и количество групп также может варьироваться. Я использую следующее выражение:

([ABCDEFGHJKLMNPQRSTVXYZ0123456789]{8}-?){3}

Это будет соответствовать ровно 3 группам по 8 символов в каждой. Любой более или менее провалит матч. Это работает постольку, поскольку он правильно соответствует входным данным. Однако, когда я использую метод Split для извлечения каждой группы символов, я просто получаю конечную группу. RegexBuddy жалуется, что я повторил саму группу захвата и что я должен поместить группу захвата вокруг повторной группы. Однако ни одна из моих попыток сделать это не привела к желаемому результату. Я уже пробовал такие выражения как это:

(([ABCDEFGHJKLMNPQRSTVXYZ0123456789]{8})-?){4}

Но это не работает.

Поскольку я генерирую regex в коде, я мог бы просто расширить его на количество групп, но я надеялся на более элегантное решение.


Обратите внимание, что набор символов не включает в себя весь алфавит. Это часть системы активации продукта. Таким образом, все символы, которые могут быть случайно интерпретированы как числа или другие символы, удаляются. например, буквы 'I', 'O', 'U' & 'W' не входят в набор символов.

Дефисы необязательны, так как пользователю не нужно вводить их сверху, но они могут быть там, если пользователь сделал копию & paste.

regex   .net-2.0    

458   9   18:50, 8th August, 2020


Regex парсить ссылки и описания

C#: что такое хороший Regex для разбора гиперссылок и их описания?

Пожалуйста, обратите внимание на нечувствительность к регистру, пробелы и использование одинарных кавычек (вместо двойных кавычек) вокруг тега HREF.

Пожалуйста, также рассмотрите возможность получения гиперссылок, которые имеют другие теги в пределах <a> тегов, таких как <b> и <i> .

html   regex    

467   6   15:52, 20th August, 2020


Каков самый быстрый способ определить полный URL из относительного URL (учитывая базу URL)

В настоящее время я использую модуль URI::URL для создания полного URL из относительного URL; однако он работает не так быстро, как хотелось бы. Кто-нибудь знает другой способ сделать это, который может быть быстрее?

regex   performance   perl   uri   perl-module    

466   5   05:43, 25th August, 2020


Получение частей a URL (Regex)

Учитывая URL (одна строка):
http://test.example.com/dir/subdir/file.html

Как извлечь следующие части с помощью регулярных выражений:

  1. Поддомен (тест)
  2. Домен (example.com)
  3. Путь без файла (/dir/subdir/)
  4. Файл (file.html)
  5. Путь к файлу (/dir/subdir/file.html)
  6. URL без пути ( http://test.example.com )
  7. (добавьте любое другое, что вы считаете полезным)

regex должен работать правильно, даже если я ввожу следующий URL:

http://example.example.com/example/example/example.html

regex   language-agnostic   url    

686   24   00:55, 23rd August, 2020


Поиск DOI в документе или странице

Система DOI в принципе не накладывает никаких полезных ограничений на то, что представляет собой разумный идентификатор . Однако, будучи в состоянии вытащить DOIs из PDFs, веб-страниц и т. д. весьма полезна для цитирования информация и т.д.

Существует ли надежный способ определить DOI в блоке текста, не предполагая префикс ' doi:'? (любой приемлемый язык, предпочтительные регексы и предотвращение ложных срабатываний обязательно)

regex   doi    

555   7   02:36, 20th August, 2020


Bash Рег-эксп замена

Есть ли способ выполнить замену строки регулярного выражения на текущей строке в bash?

Я довольно часто оказываюсь в ситуации, когда я набрал длинную командную строку, а затем понимаю, что я хотел бы изменить слово где-то в строке.

Мой текущий подход заключается в том, чтобы закончить строку, нажать Ctrl + A (чтобы добраться до начала строки), вставить # (чтобы закомментировать строку), нажать enter, а затем использовать синтаксис ^oldword^newword ( ^oldword^newword выполняет предыдущую команду после замены старого слова новым словом).

Но должен быть лучший (более быстрый) способ достичь этого. (Мышь не представляется возможным, так как я нахожусь в ssh-сеансах большую часть времени).

Вероятно, для этого есть какая-то ключевая команда emacs, о которой я не знаю.

Edit: я пробовал использовать vi-mode. Случилось что-то странное. Хотя я и являюсь любящим пользователем vim, у меня были серьезные проблемы с использованием моего любимого bash. Все эти движения пальцев, которые были выжжены в моем подсознании, внезапно перестали работать. Я быстро вернулся к emacs-режиму и подумал, давая emacs попробовать в качестве моего любимого редактора (хотя я думаю, что то же самое может произойти снова).

regex   bash    

447   3   21:29, 5th August, 2020


В чем разница между группой и матчем внутри .NET - это RegEx?

В чем разница между группой и матчем внутри .NET - это RegEx?

.net   regex    

497   2   16:54, 23rd August, 2020


Regex, чтобы соответствовать всем тегам HTML, кроме

и

Мне нужно сопоставить и удалить все теги, используя регулярное выражение в Perl. У меня есть следующее:

<\\??(?!p).+?>

Но это все равно совпадает с закрывающим тегом </p> . Есть ли какие-либо подсказки о том, как соответствовать закрывающему тегу?

Обратите внимание, что это выполняется на xhtml.

html   regex   perl    

517   13   18:57, 1st August, 2020