Как найти второе слово в строке

Here is an approach using split with multiple tokens:

    Dim a() As String = txtSource.Text.Split({vbCr, vbLf, ".", "?", "!"}, StringSplitOptions.RemoveEmptyEntries)
    txtSentences.Text = String.Join(vbCrLf, a)
    a = txtSource.Text.Split({" ", ",", ";", ":", vbCr, vbLf, ".", "?", "!"}, StringSplitOptions.RemoveEmptyEntries)
    txtWords.Text = String.Join(vbCrLf, a)

Won’t work with all cases, but a lot is them. Add three multiline textboxes to test: txtSource, txtSentences, TxtWords

2 ответа

FIND = "Вася"

with open("blabla.txt", encoding="utf-8") as  f:          # или другой еncoding=
    for string in f:
        if FIND in string:
            words = string.split()
            ind = words.index(FIND)
            print(words[ind + 1])
            break

Пример вводного файла blabla.txt:

Сегодня красивый день.
Завтра будет вторник.
У меня хороший друг, его зовут Вася Пупкин и он из Симферополя.
Я теперь поеду к нему.

Вывод:

Пупкин

MaxU - stand with Ukraine's user avatar

ответ дан 4 фев 2019 в 13:28

MarianD's user avatar

MarianDMarianD

14.1k3 золотых знака18 серебряных знаков29 бронзовых знаков

2

  • Формулировка вопроса достаточно размытая, но я все же склоняюсь к варианту когда автор хочет извлечь строго второе слово в строке, содержащей слово «Вася». Т.е. words[1]

    4 фев 2019 в 13:30

  • Так нельзя. В зависимости от значения FIND может случиться «ValueError: X is not in list». Например ищем слово «шина», а в строке есть слово «машина».

    4 фев 2019 в 13:37

Разбить строку на список слов. Найти в списке позицию, на которой находится слово «Вася». Вывести следующий за этим элемент списка.

>>> s = "Вася Пупкин"
>>> lst = s.split()
>>> lst
['Вася', 'Пупкин']
>>> lst[lst.index('Вася') + 1]
'Пупкин'

ответ дан 4 фев 2019 в 13:07

Andrey's user avatar

AndreyAndrey

3,6372 золотых знака11 серебряных знаков14 бронзовых знаков

3

  • Автор пишет про второе слово, а не про следующее.

    4 фев 2019 в 13:33

  • Нет. Я хочу вывести следующее слово после слова «Вася»

    4 фев 2019 в 13:54

  • Andrey, я не это хотел узнать. Читайте внимательнее вопрос. Я работаю с txt файлом, который подключаю к python’у

    4 фев 2019 в 13:58

Теги: javascript, символ, поиск, методы, строка, индекс, проверка, строковые функции, слово, indexof

Для поиска слова, символа или любой другой подстроки в строке в языке программирования JavaScript используют хорошо известный метод indexOf. В результате проверки метод возвращает позицию первого совпадения, если же совпадение по введённому вами символу найдено не будет, будет возвращено -1.

JavaScriptPro_970x90-20219-f847d3.png

Искомое слово или символ указываются первым параметром. Что касается второго параметра, то он необязателен. Зато с его помощью мы можем передать номер (индекс) символа или буквы, с которого надо начинать поиск. Важный момент: метод indexOf() чувствителен к регистру вводимых вами букв, слов и символов.

Синтаксис метода предельно прост:

строка.indexOf(первый параметр указывает, что ищем, [второй параметр определяет, откуда начинаем поиск]);

Приведем примеры поиска слова в строке JavaScript

В примере ниже у нас есть строка ‘Я учусь в OTUS’, причём мы ищем в строке слово ‘учусь’. Метод вернёт нам индекс 2, т. к. именно с этой позиции начинается слово ‘учусь’ в строке. Тут стоит вспомнить, что индексация (подсчёт позиции) начинается с нуля, а не с единицы.

let str = 'Я учусь в OTUS;
console.log(str.indexOf('учусь'));

В результате получим следующий вывод:


В очередном примере в строке ‘Я учу Java и учу JavaScript в OTUS’ давайте найдём слово ‘учу’, но не первое его вхождение в строку, а второе. Следовательно, начнём поиск с 5-й позиции, указав это вторым параметром.

let str = 'Я учу Java и учу JavaScript в OTUS';
console.log(str.indexOf('учу', 5));

Проверка приведёт к возвращению числа 13, т. к. именно с этой позиции начинается второе слово «учу» в нашей строке.

Давайте приведем ещё парочку примеров. В коде ниже, исследуемый нами метод поиска вернёт -1, ведь подстроки ‘Go’ в нашей строке попросту нет:

let str = 'Я учусь в OTUS';
console.log(str.indexOf('Go'));

В принципе, как видите, ничего сложного. Нам вернётся -1 и в случае, если мы будем искать одинаковые слова с разным регистром (OTUS не равно OtuS):

let str = 'Я учусь в OTUS;
console.log(str.indexOf(' OtuS'));

Вернётся -1 и в последнем примере, ведь после позиции, которую мы выбрали вторым параметром для поиска, совпадения найдены не будут:

let str = 'Я учусь в OTUS';
console.log(str.indexOf('учусь', 7));

Проверка приведёт к следующему результату:


Вот и всё, что можно сказать про простейший поиск слов и символов в строке JavaScript. Напоследок стоит упомянуть метод lastIndexOf(), тоже осуществляющий поиск символа, слова или любой подстроки в строке. Разница заключается лишь в том, что этот метод начинает искать с конца строки, а не с начала — в остальном он работает аналогично.

Больше операций по поиску в строке JavaScript, включая дополнительные операции по работе с подстрокой, вы найдёте здесь.

Интересует профессиональный курс по JavaScript-разработке? Переходите по ссылке ниже:

JavaScriptPro_970x550-20219-412f62.png

Например нужно найти два слова: «мой» и «длинной» в строке:
Мой пример очень длинной строки...
например: b(Мой|длинной)b находит два слова с условием «ИЛИ».
То есть, например, если я захочу найти два слова «мой» и «яблоко», то функция вернула бы ничего, так как и то и другое слово необходимо встретить в строке.
Плюс к этому желательно искать слова регистронезависимо.
Пишу на питоне, нужно для функции поиска


  • Вопрос задан

    более трёх лет назад

  • 930 просмотров

В этом учебном пособии вы узнаете, как использовать функцию REGEXP_SUBSTR Oracle/PLSQL с синтаксисом и примерами.

Описание

Функция Oracle/PLSQL REGEXP_SUBSTR является расширением функции SUBSTR. Эта функция, представленная в Oracle 10g, позволит вам извлечь подстроку из строки, используя сопоставление шаблонов регулярных выражений.

Синтаксис

Синтаксис функции Oracle/PLSQL REGEXP_SUBSTR :

REGEXP_SUBSTR( string, pattern [, start_position [, nth_appearance [, match_parameter [, sub_expression ] ] ] ] )

Параметры или аргументы

string
Строка для поиска. Это могут быть CHAR, VARCHAR2, NCHAR, NVARCHAR2, CLOB или NCLOB.

pattern
Шаблон. Регулярное выражение для сопоставления. Это может быть комбинацией следующих значений:

Значение Описание
^ Соответствует началу строки. При использовании match_parameter с m, соответствует началу строки в любом месте в пределах выражения.
$ Соответствует концу строки. При использовании match_parameter с m, соответствует концу строки в любом месте в пределах выражения.
* Соответствует нолю или более вхождений.
+ Соответствует одному или более вхождений.
? Соответствует нолю или одному вхождению.
. Соответствует любому символу, кроме NULL.
| Используется как «OR», чтобы указать более одной альтернативы.
[ ] Используется для указания списка совпадений, где вы пытаетесь соответствовать любому из символов в списке.
[^ ] Используется для указания списка nonmatching, где вы пытаетесь соответствовать любому символу, за исключением тех кто в списке.
( ) Используется для групповых выражений в качестве подвыражений.
{m} Соответствует m раз.
{m,} Соответствие как минимум m раз.
{m,n} Соответствие как минимум m раз, но не более n раз.
n n представляет собой число от 1 до 9. Соответствует n-му подвыражению находящемуся в ( ) перед n.
[..] Соответствует одному сопоставлению элемента, который может быть более одного символа.
[::] Соответствует классу символов.
[==] Соответствует классу эквивалентности
d Соответствует цифровому символу.
D Соответствует не цифровому символу.
w Соответствует текстовому символу.
W Соответствует не текстовому символу.
s Соответствует символу пробел.
S Соответствует не символу пробел.
A Соответствует началу строки или соответствует концу строки перед символом новой строки.
Z Соответствует концу строки.
*? Соответствует предыдущему шаблону ноль или более вхождений.
+? Соответствует предыдущему шаблону один или более вхождений.
?? Соответствует предыдущему шаблону ноль или одному вхождению.
{n}? Соответствует предыдущему шаблону n раз.
{n,}? Соответствует предыдущему шаблону, по меньшей мере n раз.
{n,m}? Соответствует предыдущему шаблону, по меньшей мере n раз, но не более m раз.

start_position
Необязательный. Это позиция в строке, откуда начнется поиск. Если этот параметр опущен, по умолчанию он равен 1, который является первой позицией в строке.

nth_appearance
Необязательный. Это n-й вид шаблона в строке. Если этот параметр опущен, по умолчанию он равен 1, который является первым вхождением шаблона в строке. Если вы укажете 0 для этого параметра, все вхождения шаблона в строке будут заменены.
match_parameter
Необязательный. Это позволяет изменять поведение соответствия для условия REGEXP_REPLACE. Это может быть комбинацией следующих значений:

Значение Описание
‘c’ Выполняет чувствительное к регистру согласование.
‘i’ Выполняет не чувствительное к регистру согласование.
‘n’ Позволяет период символа (.) для соответствия символа новой строки. По умолчанию, период метасимволы.
‘m’ Выражение допускает, что есть несколько строк, где ^ это начало строки, а $ это конец строки, независимо от позиции этих символов в выражении. По умолчанию предполагается, что выражение в одной строке.
‘x’ Игнорируются символы пробелов. По умолчанию, символы пробелов совпадают, как и любой другой символ.

subexpression
Необязательный. Используется, когда шаблон имеет подвыражения, и вы хотите указать, какое подвыражение в шаблоне является целью. Это целочисленное значение от 0 до 9, указывающее, что подвыражение соответствует шаблону.

  • Функция REGEXP_SUBSTR возвращает строковое значение.
  • Если функция REGEXP_SUBSTR не обнаруживает какого-либо вхождения шаблона, она возвращает NULL.

Примечание

  • Если для параметра match_parameter имеются конфликтующие значения, функция REGEXP_SUBSTR будет использовать последнее значение.
  • См. Также функцию SUBSTR.

Применение

Функция REGEXP_SUBSTR может использоваться в следующих версиях Oracle / PLSQL:

  • Oracle 12c, Oracle 11g, Oracle 10g

Пример совпадения в словах

Начнем с извлечения первого слова из строки.
Например:

SELECT REGEXP_SUBSTR (‘Google is a great search engine.’, ‘(S*)(s)’)

FROM dual;

—Результат: ‘Google ‘

Этот пример вернет ‘Google ‘, потому что он будет извлекать все символы без пробелов, как указано (S*), а затем первый символ пробела, заданный (s). Результат будет включать как первое слово, так и пробел после слова.

Если вы не хотите включать пробел в результат, то изменим наш пример следующим образом:

SELECT REGEXP_SUBSTR (‘Google is a great search engine.’, ‘(S*)’)

FROM dual;

—Результат: ‘Google’

Этот пример вернет ‘Google’ без пробела в конце.

Если нам необходимо найти второе слово в строке, то изменим нашу функцию следующим образом:

SELECT REGEXP_SUBSTR (‘Google is a great search engine.’, ‘(S*)(s)’, 1, 2)

FROM dual;

—Результат: ‘is ‘

Этот пример вернет ‘is ‘ с пробелом в конце строки.
Если нам необходимо найти четвертое слово в строке, мы изменим нашу функцию следующим образом:

SELECT REGEXP_SUBSTR (‘Google is a great search engine.’, ‘(S*)(s)’, 1, 4)

FROM dual;

—Результат: ‘great ‘

Этот пример вернет ‘great ‘ с пробелом в конце строки.

Пример совпадения цифр

Рассмотрим, как мы будем использовать функцию REGEXP_SUBSTR для сопоставления шаблону цифровых символов.
Например:

SELECT REGEXP_SUBSTR (‘2, 4, и 10 числа для примера’, ‘d’)

FROM dual;

—Результат: ‘2 ‘

В этом примере будет извлечена первая цифра из строки, как указано в d. В этом случае он будет соответствовать числу 2.

Мы могли бы изменить наш шаблон для поиска двузначного числа.
Например:

SELECT REGEXP_SUBSTR (‘2, 4, и 10 числа для примера’, ‘(d)(d)’)

FROM dual;

—Результат: ’10’

В этом примере будет выведено число, которое имеет две цифры, как указано в (d)(d). В этом случае он пропустит числовые значения 2 и 4 и вернет 10.

Рассмотрим, как мы будем использовать функцию REGEXP_SUBSTR со столбцом таблицы и искать двухзначное число.
Например:

SELECT REGEXP_SUBSTR (address, ‘(d)(d)’)

FROM contacts;

В этом примере мы собираемся извлечь первое двузначное значение из поля address в таблице contacts.

Пример сопоставления несколько альтернатив.

Следующий пример, который мы рассмотрим, включает использование | шаблон. | шаблон используется как «ИЛИ», чтобы указать несколько альтернатив.
Например:

SELECT REGEXP_SUBSTR (‘AeroSmith’, ‘a|e|i|o|u’)

FROM dual;

—Результат: ‘e’

Этот пример вернет ‘e’, потому что он ищет первую гласную (a, e, i, o или u) в строке. Поскольку мы не указали значение match_parameter, функция REGEXP_SUBSTR выполнит поиск с учетом регистра, что означает, что ‘A’ в ‘AeroSmith’ сопоставляться не будет.

Чтобы выполнить поиск без учета регистра изменим наш запрос следующим образом:

SELECT REGEXP_SUBSTR (‘AeroSmith’, ‘a|e|i|o|u’, 1, 1, ‘i’)

FROM dual;

—Результат: ‘A’

Теперь, поскольку мы предоставили match_parameter = ‘i’, запрос в качестве результата вернет ‘A’. На этот раз ‘A’ в ‘AeroSmith’ будет сопоставляться.

Теперь рассмотри, как вы будете использовать эту функцию со столбцом.
Итак, допустим, у нас есть таблица contact со следующими данными:

contact_id last_name
1000 AeroSmith
2000 Joy
3000 Scorpions

Теперь давайте запустим следующий запрос:

SELECT contact_id, last_name, REGEXP_SUBSTR (last_name, ‘a|e|i|o|u’, 1, 1, ‘i’) AS «First Vowel»

FROM contacts;

Результаты, которые будут возвращены запросом:

contact_id last_name First Vowel
1000 AeroSmith A
2000 Joy o
3000 Scorpions o

Пример совпадений на основе параметра nth_occurrence

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

Первое вхождение

Рассмотрим, как извлечь первое вхождение шаблона в строку.
Например:

SELECT REGEXP_SUBSTR (‘AeroSmith’, ‘a|e|i|o|u’, 1, 1, ‘i’)

FROM dual;

—Результат: ‘A’

Этот пример вернет ‘A’, потому что он извлекает первое вхождение гласного (a, e, i, o или u) в строке.

Второе вхождение

Затем мы выберем для второго вхождения шаблона в строку.
Например:

SELECT REGEXP_SUBSTR (‘AeroSmith’, ‘a|e|i|o|u’, 1, 2, ‘i’)

FROM dual;

—Результат: ‘e’

Этот пример вернет ‘e’, потому что он извлекает второе вхождение гласного (a, e, i, o или u) в строке.

Третье вхождение

Например:

SELECT REGEXP_SUBSTR (‘AeroSmith’, ‘a|e|i|o|u’, 1, 3, ‘i’)

FROM dual;

—Результат: ‘o’

Этот пример вернет ‘o’, потому что он извлекает третье вхождение гласного (a, e, i, o или u) в строке.

Понравилась статья? Поделить с друзьями:
  • Как найти телефон прокуратуры
  • Как исправить ошибки в доте при запуске
  • Как найти деда на войне 1941 1945
  • Как найти коленный сустав
  • Как найти водителя на маршрутку