我正在尝试找到一个可以实现此目的的RegEx。我已经尝试了以下两种方法,但它似乎没有用。看起来我在制作逗号可选
时遇到了麻烦"/cgi-bin/webscr\?(.*?),(.*)" -> https://www.paypal.com/cgi-bin/webscr?$1$2
"/cgi-bin/webscr\?(.*?)" -> https://www.paypal.com/cgi-bin/webscr?$1
示例输入/输出是:
http://www.example.com/cgi-bin/webscr?cmd=_xclick&business=me@my-email.com&amount=$300.00¤cy_code=USD&item_name=Payment%20for%20invoice%20MS-12345&shipping=0&pbtype=service
TO:
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=me@my-email.com&amount=300.00¤cy_code=USD&item_name=Payment%20for%20invoice%20MS-12345&shipping=0&pbtype=service
和
http://www.example.com/cgi-bin/webscr?cmd=_xclick&business=me@my-email.com&amount=$30,000.00¤cy_code=USD&item_name=Payment%20for%20invoice%20MS-12345&shipping=0&pbtype=service
TO:
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=me@my-email.com&amount=30000.00¤cy_code=USD&item_name=Payment%20for%20invoice%20MS-12345&shipping=0&pbtype=service
答案 0 :(得分:0)
如果你真的想要消除所有$,那就像以下一样简单:
s/[\$,]//g
如果您想要更复杂并且确保您只删除美元符号,后面跟一个数字后面跟一个数字或后跟3位数字(例如1,234,432.00 ==> 1234432.00),那么您可以使用零-length断言:
s/(?:(?<=\d),(?=\d{3})|\$(?=\d))//g
我不知道您正在使用什么样的正则表达式引擎,但大多数现代正则表达式引擎都支持后视和前瞻 - 通常统称为环视。根据实现情况,您只需要搜索并替换模式并使其适应您的语言/实现。以上是perl搜索/替换模式。