2013-03-12 4 views
0

Я работаю в SAS Content Categorization Studio. Я пытаюсь получить две концепции, состоящие из одного регулярного выражения каждый, чтобы вернуть несколько совпадений. Предполагается, что каждый найдет даты, а другой - отформатированное число.Невозможно использовать два регулярных выражения в SAS Content Categorization Studio

(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](?:[0-9]{2})?[0-9]{2} 

[1-9](?:(?:[ -.])?\d){10,10} 

Регулярное выражение, которое должно найти отформатированный номер (последний) не возвращают никаких хитов до тех пор, как регулярное выражение, которое, как предполагается, чтобы найти даты (бывшие) активен или не закомментирован. Как только я прокомментирую регулярное выражение для даты, последний продолжает работать снова. Они кажутся взаимоисключающими. Может ли кто-нибудь сказать мне, что я делаю неправильно?

+0

Одна потенциальная проблема, которую я вижу, - это ваша. символов внутри квадратных скобок. Вы пытаетесь соответствовать буквальной точке? Если это так, вам нужно сбежать от него [\.] (Также обратите внимание, что квадратные скобки в этом случае не нужны.) Без обратной косой черты он будет соответствовать любому символу. –

+0

Кроме того, у вас есть строка ввода для этого регулярного выражения, которая подчеркивает проблему? –

+0

Какой именно код SAS вы используете? Проблема может быть в другом месте. – Tartaglia

ответ

0

Если ваш шаблон на конце (?:(?:[ -.])?\d){10,10} является частью матча, он, кажется, немного от меня. То, что похоже на совпадение, - это 10 итераций «Некоторый необязательный символ (буквально ничего из-за«. »), За которым следует цифра». Во-первых, похоже, что вам понадобится 8 итераций, а не десять, чтобы соответствовать дате. Но я думаю, что вы действительно хотите что-то вроде \d{1,2}([\.-])\d{1,2}\1\d{4}. Это будет соответствовать «Один или два цифры, за которым следует буквальный или -, а затем еще одна или две цифры, за которыми следует специальный символ, который вы сопоставляли до (. Или -), а затем четыре цифры».

+0

Привет, Мэтт, и спасибо за ваш ответ. Точки в квадратных скобках не обязательно должны быть экранированы. Первое регулярное выражение не должно найти значение даты, но 11-значное число. Второе регулярное выражение должно найти значение даты. Оба выражения имеют правильный синтаксис. Таким образом, проблема заключается не в синтаксисе, а в том, что Content Categorization Studio возвращает только совпадения для одного регулярного выражения, если другой отключен. – mpdegn

+0

Вы правы - '.' не нужно экранировать внутри' [] '' s. Кроме того, я смотрел на выражения назад - я думал, что второй пытался сопоставить дату, в то время как первая соответствовала 11-значному номеру. –