【发布时间】:2019-11-22 19:30:28
【问题描述】:
这里不完全是一个正则表达式天才,但到目前为止我有这个:(?>^)"|^(?!"$) 和这个(?>^)"(?<$)"
但它只在第一个正则表达式中捕获第一个双引号,后者抛出错误。
这是一个简短的多行字符串示例:
8433|NTC Nano Tech Coatings GmbH|Marpinger Weg 2|||Tholey||D-66636|DE|1|EUR|
"8434|Piramal Enterprises Ltd,|Plot No: 18, ""PHARMEZ"",|Pharma Special Economic|Zone,Sarkhej-Bawla NH #8AVilla|Ahmedabad||382213|IN|20|USD|"
"8435|PolyDrop, LLC|22431 76th AVE S|||Kent|WA|98032|US|7|USD|"
我需要一种方法来通过正则表达式解析它以删除每行上的第一个“和最后一个”,但不要触及行内的任何其他双引号。如果它们是一行的第一个和最后一个字符,则仅将它们替换为空字符串。
有人可以帮我吗?似乎我在尝试获取行的最后一个字符的最后一个双引号时做错了。
【问题讨论】:
-
要匹配行上的第一个和最后一个双引号,请使用
(?m)^"|"$ -
什么是正则表达式解析器?
-
PCRE 我想用 PHP。 @WiktorStribiżew 看起来我还需要考虑行尾的额外空格。
-
喜欢
(?m)^\h*\K"|"(?=\h*$)? -
@WiktorStribiżew - 我相信这行得通。为什么理解正则表达式这么难?我真的需要更好地学习这门语言。