我想用正则表达式处理字符串,但如何编写正确的正则表达式

i want to handle a string by regex, but how to write the right regex?

本文关键字:正则表达式 何编写 处理 字符串      更新时间:2023-10-16

我有四个字符串,它们是"a.mob"、"b.mob"answers"c.mob">

我想匹配"a.mob"、"b.mob"和任何以".mob"结尾的字符串,但除了"c.mob"或"e.mob",我试着写一个正则表达式匹配:

"^(?!.*(c|e)).*?(?!mob)"

它完成了任务,但我认为它很难阅读和理解。

在我的脑海里,也许有一些简单明了的搭配。

我的问题是,我的比赛太复杂了吗?regex是最好的解决方案吗?

欢迎来到SO.

如果你想"匹配一个以something结尾的字符串",你必须在正则表达式中使用$(别忘了引用.,它是正则表达式中的一个特殊字符(:

"^[^ce]\.mob$"

(例如,否则将匹配biloximob5(。

如果你的字符串可能与你显示的五个不同,也许你必须更通用:

"^([^ce]|..+)?\.mob$"

例如,与.mobelefante.mob匹配,但与.mobie.mob不匹配。。。

我可以推荐像regexr这样的regex试用工具吗?这可能是一个好主意,这样您就可以训练regexen的使用。

更新:当您从perl/regexr返回到c++时,不要忘记引用反斜杠。。。。