Я создал сценарий с использованием 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, чтобы также включить буквенно-цифровые акронимы?
Какие аббревиатуры не означают аббревиатуру, образованную из начальных букв других слов и произносимую как слово (например, ASCII, NASA). Если это не так, то что вы можете сделать, НАСА, P2W, PVP?
Непонятно, что вы подразумеваете под аббревиатурой, поскольку единственное определение, которое вы даете, - это само регулярное выражение, которое вы пытаетесь исправить, поэтому это явно неправильное определение. Будет ли 12AB «аббревиатурой»? Как насчет AA-BB-12? Не могли бы вы дать лучшее определение или описание?
Грисмар, я понимаю вашу точку зрения и должен был быть более ясным в том, что означает ожидание от аббревиатуры. Я обновил сообщение, но ожидание совпадения слов должно состоять в том, что первый символ является буквой и должен содержать как минимум две заглавные буквы и как минимум одну цифру. Кроме того, если в слове есть тире, то символы перед тире должны соответствовать ожидаемому совпадению слова. Таким образом, 12AB не будет аббревиатурой, но будет AB-12AB или AB-1233-12. Надеюсь, это проясняет ситуацию.
@Milco, на каком языке вы пытаетесь найти совпадение?
@entpnerd Язык, на котором в настоящее время написан скрипт, - VBA.
@Milco Вас может заинтересовать: форумы.windowssecrets.com/showthread.php/…





Милко, добро пожаловать в StackOverflow. Я думаю, что вам подойдет следующее регулярное выражение:
([A-Z][A-Z0-9]+)(-[A-Z0-9]{2,})*
Это регулярное выражение содержит цифры и необязательное количество терминов, разделенных дефисом, и соответствует каждому из приведенных выше случаев. Я тестировал его на regextesteronline.com - я предполагаю, что регулярные выражения VB.net такие же, как VBA, какими они должны быть, по крайней мере, для базовых регулярных выражений.
Я не думаю, что акроним означает то, что вы думаете.