【问题标题】:Replacing hyphen, space and question mark with star用星号替换连字符、空格和问号
【发布时间】:2016-03-07 11:09:29
【问题描述】:

我正在尝试使用 ColdFusion 中的正则表达式将连字符、空格和问号替换为 *。它看起来像:

ReReplace( txt, "-?\s+\?*","*", "All" )

但它不会替换字符串末尾的问号。有什么帮助吗?

【问题讨论】:

  • 你测试它的字符串是什么?尝试将\s+ 替换为\s* 并将\?* 替换为\?+: "-?\s*\?+"。或使用 -?\s+\?*|-?\s*\?+$ 之类的替代方式
  • 您能否更新您的问题,使其更明确地包含您想要匹配的内容?你的叙述不清楚它是“任何离散出现的 -、[空格] 或问号”,还是确切的序列“-?”,或“任何数量的任何这些字符”等等。这些都不清楚鉴于您的叙述与您的示例正则表达式模式之间的脱节。

标签: regex coldfusion


【解决方案1】:

为了让你的代码更具可读性,我会这样写:

<cfscript>
txt = "Hello! testing 1-2-3. How are you?";
foo = ReReplace(txt, "[- ?]","*", "All");
writeDump(foo);
</cfscript>

这将返回:

Hello!*testing*1*2*3*How*are*you*

范围内的字符(方括号)不需要转义,这样更容易阅读(无论如何对我来说!)。值得注意的是-是一个范围内的特殊字符,所以我把它作为第一个字符。

如果您执行[ -?],则正则表达式将匹配空格 和? 之间的任何字符并返回:

Hello**testing*******How*are*you*

【讨论】:

  • 您建议的模式与 OP 的模式太不同了。为什么你认为它应该有所帮助?
  • 它解决了I am trying to replace Hyphen, space and questionmarks with * using a regular expression in Coldfusion 的问题,我解释了为什么我认为这是一种更好的编写方式。
  • 所以,这就是你添加感叹号的原因? OP 的正则表达式显示了仅匹配 sequence 中的符号的尝试,您的不匹配,您的正则表达式将替换复合词中的连字符。它会破坏字符串,没有帮助。
  • 您可能是对的,他们确实想按顺序进行。我试图回答这个问题,而不是查看 OP 给出的 reg exp 示例,因为他们说它不起作用。至于! - 我误读了这部分 - 将更新我的答案。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-12-25
  • 2020-09-05
  • 1970-01-01
  • 2021-12-07
  • 1970-01-01
  • 1970-01-01
  • 2012-08-17
相关资源
最近更新 更多