Найдите первую букву и знак предложения с помощью регулярных выражений - PullRequest
2 голосов
/ 04 июня 2019

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

15. Lorem ipsum is placeholder text
B. Lorem ipsum is placeholder text
C.Lorem ipsum is placeholder text
D .  Lorem ipsum is placeholder text
E,Lorem ipsum is placeholder text

Я написал что-то вроде этого:

[\dga-zA-Z.]{1\s}

Демонстрация с regex101

Но это не работает правильно для каждого предложения.Более того, он не обнаруживает, есть ли пробел между первой буквой / цифрой и знаком с предложением.

Где я делаю ошибку?


Также в терминахпроизводительности Для таких сценариев имеет смысл использовать регулярные выражения или PHP?

Ответы [ 3 ]

0 голосов
/ 04 июня 2019

Использование: ^[\da-zA-Z]+\h*[.,]

Демо

Объяснение:

^                   # beginning of line
  [\da-zA-Z]+       # 1 or more letter or digit
  \h*               # 0 or more horizontal spaces
  [.,]              # a dot or a comma
0 голосов
/ 04 июня 2019

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

^(([a-zA-Z]{1}|[0-9]+)\s*[.,]{1})(.*)$

Это разбивка:

^                  # Asserts position at start of the line
[a-zA-Z]{1}|[0-9]+ # Match a single alphabetic character or one or more digits
\s*                # Matches whitespace characters between 0 and unlimited times
[.,]{1}            # Matches a single period or comma character literal
.*                 # Matches the rest of the text
$                  # Asserts position at end of the line

  • Группа 1 - вернет букву / цифры и точку / запятую (включая потенциальные пробелы). Это на тот случай, если вам нужно получить оба варианта по какой-то причине.
  • Группа 2 - в начале предложения будут возвращаться только буквы или цифры, которые, как я полагаю, вы действительно будете искать большую часть времени.
  • Группа 3 - вернет остаток текста.

Регулярное выражение нужно будет изменить в зависимости от того, что вы хотите. Например, если вы не хотите совпадения, когда после буквы / цифры в начале предложения есть пробелы или если вы хотите добавить больше символов-разделителей, которые обозначают символ-разделитель. Дайте мне знать, если у вас есть какие-то дополнительные ограничения, которым вы хотите, чтобы это регулярное выражение соответствовало.

См. DEMO

0 голосов
/ 04 июня 2019

Здравствуйте, это соответствует всем предоставленным вами примерам

([A-Za-z\d ]+)(\.|,)

Что делает следующее:

  • соответствует всем маленьким, большим буквам, цифрам или пробелам. Должно найти хотя бы один из тех или более (знак +).
  • Он должен заканчиваться точкой или запятой. (\.) Примечание. В регулярном выражении точка должна быть экранирована.

Если это не сработает, прокомментируйте ниже

Редактировать: демо здесь: нажмите

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...