Відповіді:
Якщо ви хочете відповідати лише рядкам, що починаються з припинення використання
^stop
Якщо ви хочете зрівняти рядки, що починаються зі слова стоп, після якого пробіл
^stop\s
Або, якщо ви хочете збігати рядки, що починаються зі слова stop, але за ними слід або пробіл, або будь-який інший несловний символ, який ви можете використовувати (ваш смак регулярного виразу дозволяє)
^stop\W
З іншого боку, те, що слідує, відповідає слову на початку рядка для більшості ароматів регулярних виразів (у цих ароматах \ w відповідає протилежності \ W)
^\w
Якщо у вашому смаку немає ярлика \ w, ви можете використовувати
^[a-zA-Z0-9]+
Будьте обережні, що ця друга ідіома буде відповідати лише буквам і цифрам, жодним символом.
Перевірте свій посібник зі смаку регулярних виразів, щоб дізнатись, які ярлики дозволено і що саме вони відповідають (і як вони працюють з Unicode.)
^stop\b, що дозволить будь-яку межу, включаючи кінець рядка
Спробуйте це:
/^stop.*$/
Пояснення:
Якщо ви хочете примусити цю зупинку супроводжуватися пробілами, ви можете змінити RegEx так:
/^stop\s+.*$/
Примітка: Також майте на увазі, що RegEx вище вимагає, щоб після стоп-слова стояв пробіл! Тож він не збігався б з рядком, який містить лише: stop
Якщо ви хочете, щоб щось збігалося після зупинки слова, ви можете використовувати не лише на початку рядка: \bstop.*\b- слово, за яким слідує рядок
Або , якщо ви хочете , щоб відповідати слову у використанні рядка \bstop[a-zA-Z]*- лише слова , що починаються з обмежувачем
Або початок рядків із зупинкою лише ^stop[a-zA-Z]*для слова - лише перше слово
Весь рядок ^stop.*- перший рядок рядка
А якщо ви хочете зрівняти кожен рядок, що починається зі стопа, включаючи нові рядки, використовуйте: /^stop.*/s- багаторядковий рядок, що починається зі стопа
Як @SharadHolani сказав. Це не збігатиметься з кожним словом, що починається на " зупинити "
. Тільки якщо це на початку рядка на кшталт " перестати ходити ". @Waxo дав правильну відповідь:
Це один трохи краще, якщо ви хочете , щоб відповідати будь-якому слову , що починається з « стоп » і не містить нічого , крім листа від А до Z .
\bstop[a-zA-Z]*\b
Це відповідало б усім
зупинка (1)
випадкова зупинка (2)
зупинка (3)
хочу зупинити (4)
будь ласка, зупиніться (5)
Але
/^stop[a-zA-Z]*/
буде відповідати лише (1) до (3), але не (4) & (5)
/stop([a-zA-Z])+/
Буде відповідати будь-якому слову зупинки (зупинка, зупинка, зупинка тощо)
Однак, якщо ви просто хочете відповідати "стоп" на початку рядка
/^stop/
зробить: D
Якщо ви хочете порівняти будь-що, що починається зі "стоп", включаючи "зупинити рух", "зупинка" та "зупинка", використовуйте:
^stop
Якщо ви хочете, щоб слово " стоп" супроводжувалось будь-чим, як у "зупинити рух", "зупиніть це", але не "зупинено" та не "зупинено" використовуйте:
^stop\W
Я б порадив не застосовувати простий регулярний вираз до цієї проблеми. Занадто багато слів, які є підрядками інших не пов’язаних між собою слів, і ви, мабуть, зведете себе з розуму, намагаючись переадаптувати простіші рішення, що вже пропонуються.
Ви хочете, щоб принаймні наївний алгоритм стермінування (спробуйте штамм Портера; доступний безкоштовний код на більшості мов) спочатку обробляє текст. Зберігайте цей оброблений текст та попередньо оброблений текст у двох окремих масивах, розділених пробілом. Переконайтесь, що кожен не алфавітний символ також отримує свій власний індекс у цьому масиві. Незалежно від списку слів, який ви фільтруєте, потримайте їх.
Наступним кроком буде пошук індексів масиву, які відповідають вашому списку сформованих слів зупинки. Видаліть їх з необробленого масиву, а потім знову приєднайтеся до пробілів.
Це лише трохи складніше, але підхід буде набагато надійнішим. Якщо у вас є якісь сумніви у значенні більш орієнтованого на НЛП підходу, можливо, ви захочете провести кілька досліджень щодо критичних помилок .
Якщо ви хочете, щоб слово починалося зі "стоп", ви можете використати такий шаблон. "^ зупинити. *"
Це буде відповідати словам, що починаються з зупинки, після чого щось.
"^stop"?
code String line = "stopped"; String pattern = "^stop"; Pattern r = Pattern.compile(pattern); Matcher m = r.matcher(line); System.out.println(m.find( )); //prints true System.out.println(line.matches(pattern)); //prints false