Все остальные ответы дают правильные изменения в регулярном выражении, поэтому я объясню, в чем проблема с вашим оригиналом.
Квадратные скобки указывают класс символов - это означает, что регулярное выражение будет соответствовать любому символу в этих скобках. Однако, как и все остальное, он будет соответствовать ему только один раз по умолчанию. Так же как регулярное выражение "s
" будет соответствовать только первому символу в "ssss
", регулярное выражение "[a-zA-Z0-9]
" будет соответствовать только первому символу в "Connectivity Framework
".
Добавляя повторение , можно получить этот класс символов для многократного соответствия. Самый простой способ сделать это - добавить звездочку после нее (которая будет соответствовать 0 или более вхождениям). Таким образом, регулярное выражение "[a-zA-Z0-9]
*" будет соответствовать столько символов в строке, пока не попадет на символ, который не входит в этот класс символов (в вашем случае это пробел, поскольку вы не включили его в скобки).
Регулярные выражения могут быть довольно сложными для точного описания синтаксиса - что если кто-то вставит в атрибут не алфавитно-цифровой символ, например амперсанд? Вы можете попытаться захватить весь ввод между кавычками, сделав набор символов «что угодно, кроме символа кавычки», поэтому «'[^']*'
» обычно делает правильные вещи. Зачастую вам также нужно помнить о побеге (например, с помощью строки 'Mary\'s lamb'
вы действительно хотите захватить апостроф в середине, чтобы простой набор символов «все, кроме апострофов» его не разрезал), хотя, к счастью, это не так проблема с XML / HTML в соответствии со спецификациями.
Тем не менее, если есть доступная библиотека, которая будет выполнять извлечение для вас, это, вероятно, будет быстрее и правильнее, чем ваша собственная, поэтому я бы склонялся к этому, если это возможно.