首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >regexp只匹配一个事件,后面跟着两个数字

regexp只匹配一个事件,后面跟着两个数字
EN

Stack Overflow用户
提问于 2018-09-27 14:53:53
回答 2查看 37关注 0票数 1

如果以下两种情况都是真的,我希望用,替换为.

  • ,应该只在字符串中出现一次。
  • ,后面最多应为两位数

这些都没问题:1 000 000,511.000,9

这些不是:9,523,036.111,000

到目前为止我的进化:https://regex101.com/r/njuKtb/1

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2018-09-27 14:58:13

您可以使用此正则表达式进行搜索:

代码语言:javascript
复制
^([^,]*),(?=\d{1,2}(?!\d))(?!.*,)

并使用此替换:

代码语言:javascript
复制
$1.

RegEx演示

RegEx详细信息:

  • ^([^,]*):在开头匹配0或多个非逗号字符。
  • ,:匹配文字逗号
  • (?=\d{1,2}(?!\d)):匹配1或2位数,后面没有另一位数字
  • (?!.*,):确保前面没有逗号

另一种方法是将其用于搜索:

代码语言:javascript
复制
^([^,]*),(?=\d{1,2}(?!\d))([^,\n]*)$

并以下列案文取代:

代码语言:javascript
复制
$1.$2
票数 1
EN

Stack Overflow用户

发布于 2018-09-27 15:12:43

你可以:

代码语言:javascript
复制
/^(?!^[^,\n]*,[^,\n]*,[^,\n]*)(?:[^,\n]*),(?=\d{1,2}\D*$)/m

演示

即:

代码语言:javascript
复制
^                            Start of string or line                 
(?!^[^,\n]*,[^,\n]*,[^,\n]*) Only matches lines with a single ','
(?:[^,\n]*)                  Suck up the LH before the ,
,                            The , 
(?=\d{1,2}\D*$)              no more than two \d before end of the line 
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52539784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档