Поиск всех возможных сокращений

Я создал сценарий с использованием VBA для просмотра документа Word, чтобы найти все слова, которые могли быть аббревиатурой, но я обнаружил, что мой шаблон regEx не находит их все.

Я использую шаблон regEx "([A-Z] {2,}) (- ([А-Я] {2,}) [A-Za-z0-9] )"

С помощью этого шаблона я могу найти

AA
AAA
AA-BB
AA-BBB
AAA-BB
AAA-BBB
AAA-1234
AAA-BBB-1234

но не находит этих слов

B2B
B2B-1234
B2B-A1A-1234

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

Есть ли способ использовать приведенный выше шаблон regEx, чтобы также включить буквенно-цифровые акронимы?

Я не думаю, что акроним означает то, что вы думаете.

Robby Cornelissen 11.01.2019 04:54

Какие аббревиатуры не означают аббревиатуру, образованную из начальных букв других слов и произносимую как слово (например, ASCII, NASA). Если это не так, то что вы можете сделать, НАСА, P2W, PVP?

Milco 11.01.2019 04:59

Непонятно, что вы подразумеваете под аббревиатурой, поскольку единственное определение, которое вы даете, - это само регулярное выражение, которое вы пытаетесь исправить, поэтому это явно неправильное определение. Будет ли 12AB «аббревиатурой»? Как насчет AA-BB-12? Не могли бы вы дать лучшее определение или описание?

Grismar 11.01.2019 05:12

Грисмар, я понимаю вашу точку зрения и должен был быть более ясным в том, что означает ожидание от аббревиатуры. Я обновил сообщение, но ожидание совпадения слов должно состоять в том, что первый символ является буквой и должен содержать как минимум две заглавные буквы и как минимум одну цифру. Кроме того, если в слове есть тире, то символы перед тире должны соответствовать ожидаемому совпадению слова. Таким образом, 12AB не будет аббревиатурой, но будет AB-12AB или AB-1233-12. Надеюсь, это проясняет ситуацию.

Milco 11.01.2019 05:25

@Milco, на каком языке вы пытаетесь найти совпадение?

entpnerd 11.01.2019 05:35

@entpnerd Язык, на котором в настоящее время написан скрипт, - VBA.

Milco 11.01.2019 06:24

@Milco Вас может заинтересовать: форумы.windowssecrets.com/showthread.php/…

macropod 11.01.2019 07:19
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
3
7
511
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

([A-Z][A-Z0-9]+)(-[A-Z0-9]{2,})*

Это регулярное выражение содержит цифры и необязательное количество терминов, разделенных дефисом, и соответствует каждому из приведенных выше случаев. Я тестировал его на regextesteronline.com - я предполагаю, что регулярные выражения VB.net такие же, как VBA, какими они должны быть, по крайней мере, для базовых регулярных выражений.

Другие вопросы по теме