2012-06-05 3 views
0

Я не могу хорошо прочитать регулярное выражение и унаследовал некоторый код, который я пытаюсь интерпретировать. У меня есть два вопроса.Regex удаляет символ многоточия

Во-первых, не могли бы вы объяснить, что делают фигуры регулярного выражения?

Во-вторых, у нас есть проблема, когда символ с эллипсисом заменяется пробелом по этому коду, и мы хотели бы сохранить многоточие. Что нужно изменить в заявлении, чтобы сохранить многоточие?

Dim Test As String = "Test...test" 'this is three dots and not an ellipsis, but just as an example 
Dim NotGoodCharacters As String = "[^\w\,<>:;~`@#$%^&*()_=+\-{}|[\]\\?/! ""'']" 
Return System.Text.RegularExpressions.Regex.Replace(Test, NotGoodCharacters, " ") 

Большое спасибо.

ответ

2

Это заменяет любой символ, который НЕ в комплекте:

\w\,<>:;[email protected]#$%^`&*()_=+-{}|[]\?/! ""'' 

с пространством. Каждый раз, когда вы видите [^...], регулярное выражение соответствует любому символу, который не является одним из символов между [^ и ]. \w соответствует любому символу слова, \, соответствует запятой, \\ соответствует косой чертой. Я думаю, что эллипс не является ни одним из этих персонажей, поэтому имеет смысл, что он будет удален.

UPDATE:

После @ комментарий Алана я заметил несколько больше, что, вероятно, следует объяснить. \- соответствует тире, \] соответствует закрывающей квадратной скобе.

Если вы хотите исключить эллипс, вы можете попробовать изменить свое регулярное выражение для этого:

Dim NotGoodCharacters As String = "[^\w\,<>:;~`@#$%^&*()_=+\-{}|[\]\\?/! ""''\x85]" 

\x85 соответствует коду ASCII для горизонтальной многоточие.

+0

Исправление: '\ w' соответствует любому слову ** character **. Вероятно, это то, что вы имели в виду, но многие люди начинают ожидать, что '\ w' будет соответствовать целому слову, а не одному символу. Нет смысла добавлять в эту путаницу. Кроме того, я уверен, что последовательность '\\?' Представляет собой экранированную обратную косую черту и вопросительный знак (который не обязательно должен быть экранирован внутри класса символов). –

+0

Обновлено. Спасибо за исправление. Я также обновился, чтобы объяснить несколько других побегов. –

+0

Таким образом, OP должен просто быть в состоянии \. к классу отрицательных символов и быть в порядке? – dsrekab

-1

Вот небольшой инструмент для создания флеш-памяти, который поможет вам создать регулярное выражение. RegExr

+0

Это не использует JavaScript. Он использует Flash. Основным языком (и механизмом регулярных выражений) является ActionScript 3. Регулярные выражения AS3 и ES3/5 очень похожи, но не идентичны. – slevithan

+0

Мой плохой, не знаю, почему я думал, что это вспышка. – cDecker32

Смежные вопросы