2016-01-28 5 views
-4

Так что у меня этот кусок коды:Confused с этим регулярным выражением

... 
Else If (RegExMatch(hayStr, "iS)(\[[a-z0-9]*\])*")) 
{ 
    hayStr := RegExReplace(hayStr, "S)\[[0-9]+\]*", "") 
    hayStr := RegExReplace(hayStr, "iS)(\[citation needed\])*", "") 
    hayStr := RegExReplace(hayStr, "iS)(\[note [0-9]+\])*", "") 
} 
Else 
{ 
    hayStr := RegExReplace(hayStr, "([-\.\(\)\s]*)", "") 
} 

Первая часть (не показан), форматирует URL в буфере обмена. Вторая часть (else if) удаляет цитаты из записи Wiki, в то время как последняя часть удаляет специальные символы и пробелы в телефонном номере.

Проблема в том, что вы пытаетесь выполнить код, первая часть отлично работает, так что вторая часть, однако, когда дело доходит до форматирования телефонных номеров, похоже, она не захватывает содержимое буфера обмена. У меня такое чувство, что он попадает во вторую часть вместо [0-9] *. Должны ли телефонные номера (например: +1 234-567-8900) быть уловлены в заявлении Else, так как в нем нет скобок?

+0

Что такое значение hayStr? Сделайте настройку, где вы знаете, какой код работает, чтобы вы знали, разрешаете ли вы правильную проблему. Что это за разговоры о буфере обмена, это кажется неуместным. Показ некоторых данных поможет мне подумать. – Michael

+0

Значение hayStr происходит из буфера обмена, который может быть либо строкой URL, либо номером телефона, либо абзацем из записи Wiki с цитатами. Нет строгого формата для телефонных номеров (так как он зависит от источника к источнику), и единственная константа для записи Wiki заключается в том, что она может содержать или не содержать цитаты. Однако нет никаких проблем с первым условием для URL. –

+0

Можете ли вы добавить инструкцию печати для каждой ветви 'If', чтобы увидеть, какой из них выполняется? – Barmar

ответ

0

Попробуйте это:

F4:: ; press F4 to trigger it 
hayStr := Clipboard 
If (RegExMatch(hayStr, "S)(\[.*\])")) 
{ 
    hayStr := RegExReplace(hayStr, "S)\[\d+\]", "") 
    hayStr := RegExReplace(hayStr, "iS)(\[citation needed\])", "") 
    hayStr := RegExReplace(hayStr, "iS)(\[note \d+\])", "") 
} 
Else 
{ 
    hayStr := RegExReplace(hayStr, "[-\.\(\)\s]", "") 
} 

MsgBox, %hayStr% 
Смежные вопросы