Мне нужен правильный синтаксис Regex для замены 0 <anything>на "0 <anything>" в VB.Net - PullRequest
0 голосов
/ 15 марта 2020

Я работаю в приложении VB. Net и пытаюсь защитить числа с ведущими нулями (например, почтовые индексы) в группе файлов CSV, объявляя их текстом с использованием двойных кавычек (") в качестве разделителей текста. Файлы являются существующими файлами, поэтому я не могу go вернуться к источнику и восстановить файлы.

Каким будет правильный синтаксис Regex, чтобы найти каждое вхождение, 0 и заменить его на, "0

Например, сделать, 01234, в" 01234 "или, 0011112222, в" 0011112222 ",

Я знаю, это должно быть просто" мозг мертв ", но я просто могу" заставить его работать.

Ответы [ 2 ]

1 голос
/ 15 марта 2020

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

/(?<!")\b0\d+\b(?!")/g

В VB. net двойные кавычки будут возможно, придется экранировать:

Dim text As String = "01234, ""01234"", 0011112222, ""0011112222"", 100, 0, 11a00bc00123, 00foo."
Dim output As String = Regex.Replace(text, "(?<!"")(\b0\d+\b)(?!"")", """$1""")
Console.WriteLine(output)

Вывод:

"01234", "01234", "0011112222", "0011112222", 100, 0, 11a00bc00123, 00foo.
1 голос
/ 15 марта 2020

Может быть ...

(?<!\d)(0\d+)

Заменить на ...

"$1"

Если вам нужно защитить какие-либо одиночные нули, то, возможно, ...

(?<!\d)(0\d{0,})

Демо: https://regex101.com/r/CFFpu8/1

...