2014-09-09 1 views
-3

Например: «Как подключить Serial ATA Hard HP 3D диски»соответствует регулярному выражению заглавных слов и заменить капитализировать

Я хочу, чтобы заменить «ATA» в «Ата» по регулярному выражению в рубин, но не включая " 3D». в основном английские слова.

другой пример: "CD/DVD ХРАНЕНИЯ КОШЕЛЬКА-80 PCS нейлон" => "CD/DVD хранения Бумажник-80 шт Nylon"

D-Link DGS-1005G 6PORT ПРАВИЛЬНЫЕ РЕСУРСЫ => D-Link DGS-1005G 6Port Правильные ресурсы

HP85 C9429A OEM PUT ВОЗВРАЩЕНИЯ МЕЖДУ => HP85 C9429A OEM Помещенный Возвраты Между

Forexample INDENT76 469-ФУНКЦИИ, 10x2 LINKS => Forexample Indent76 469-функции, 10x2 Ссылки

Благодаря!

+0

Это не двунаправленное преобразование. Вы можете вскрыть все, но его сложно отменить. Я думаю, нет никакого алгоритма, чтобы сделать это надежно. Слишком много краевых случаев. – ayckoster

+0

Как отличить вещи, которые включают числа? Какие из них сделать строчными буквами? Например, вы уменьшаете 'INDENT76' и' 6PORT', но не '1005G', ни' HP85', ни 'C9429A' - почему? –

+0

Я думаю, что это бренд - общие сокращения, поэтому он не будет содержать строчные буквы, в любом случае я добавлю список, чтобы использовать язык программирования, чтобы пропустить его. Числа с 3 и более символами будут строчными. Я думаю, что мне нужно регулярное выражение, чтобы проверить 2 слова или выше, слова в верхнем регистре, и я воспользуюсь языком программирования. – wkang

ответ

1

Вы должны определить, какую пунктуацию вы считаете сломанным символом. Например, я могу вывести из вашего примера, что вы не хотите сломать слова на / (из-за CD/DVD), но вы хотите разбить их на - (из-за WALLET-80).

Такое регулярное выражение будет:

(?<=$|[-\s])\p{Lu}+(?=$|[-\s]) 

Демо: http://regex101.com/r/nS7xB0/1

Добавить свои собственные слова непосильным символы в [-\s] скобках.


EDIT: Хорошо, следуя вашей обратной связи, вот еще регулярное выражение для вас:

\b(?=(?:\w*?\p{Lu}){3})\w+\b 

Это один будет соответствовать любой буквы/цифры комбинации, содержащей по меньшей мере 3 прописные буквы.

Демонстрация: http://regex101.com/r/nS7xB0/2

+0

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

+0

Ну, тогда вам нужно предоставить список сокращений, которые вы хотите пропустить. Что вы подразумеваете под словом? Измените свой вопрос, чтобы предоставить больше примеров. –

+0

Спасибо, обновлено. Для аббревиатур я добавлю массив для пропусков. – wkang