当前位置: 首页 > 知识库问答 >
问题:

C#Regex表示可能被引号包围的单词

宗政霄
2023-03-14

例如,假设我的模式是单词“hello”,我创建了这个正则表达式:

"\(?hello\)?"

但这并没有考虑到这个词必须同时有开始括号和结束括号才能作为匹配词。例如,如果我的搜索字符串是:

hello, (hello), (hello, my name is bob), (bob said hello)

我想要的是有以下4个匹配-你好(你好)你好你好

具体地说,第二匹配包括圆括号,但是第三和第四匹配不包括任何圆括号,因为它们不在"你好"的开头和结尾。

我可以使用什么样的正则表达式来实现这一点?

共有2个答案

徐飞龙
2023-03-14

在别人花太多时间之前,我确实找到了一个答案(但是如果你有更好的方法,请分享!!!)

经过一番研究,我的最终模式变成了:

(\()?hello(?(1)\))

它使用可选的捕获组和条件反向引用

再说一次,如果有人有更好的解决方案,请分享,否则,希望这能在将来帮助别人!

阴礼骞
2023-03-14

您可以简单地使用替换来匹配\(hello\)hello

\(hello\)|hello

由于正则表达式本质上是贪婪的,所以(Hello)将在Hello之前匹配,这意味着所有四个实例都将匹配。

 类似资料:
  • 我正在寻找正确的regex来为我提供以下结果: null 例子: 福吧 组1:foo 组2:bar 说明:在空格上拆分 组1:foo bar 描述:用双引号包围,所以将foo和bar分组,但不要打印双引号 null null null null null 组1:foo bar 组2:堆栈溢出 组1:foo'bar 组2:堆栈溢出 组3:如何 组4:do 组5:您 组6:do

  • 例如:当我通过->不要:它工作正常 但是当我通过->don''t:它不正常工作时,最终输出变成了don'''t 我只想把单引号转换成双引号。我怎么能这么做?

  • 问题内容: 我是正则表达式的新手,非常感谢您的帮助。我正在尝试将一个表达式合并在一起,以使用不被单引号或双引号引起来的所有空格拆分示例字符串。我的最后一次尝试看起来像这样:(?!”)并且效果不佳。它在报价前的空格处分开。 输入示例: 所需的输出: 注意并保留单词之间的空格。 问题答案: 我不明白为什么其他所有人都提出如此复杂的正则表达式或如此长的代码。本质上,你想从字符串中获取两种东西:不是空格或

  • 问题内容: 在整个SQL查询中使用单引号和使用双引号有什么区别吗? 哪个更好: 这种方法(带单引号): ? 或这种方法(使用双引号): 有没有更好的方法可以做到这一点? 对我来说,我喜欢第一种方法,因为我总是更喜欢PHP中的单引号。因此,我想确保在整个SQL查询中使用单引号是可以的,并且在变量或数据周围使用双引号是可以的并且可以跨平台使用,并且可以与MySQL以外的其他数据库一起使用! 问题答案:

  • 你可通过在映射文档中使用反向引号(`)把表名或者字段名包围起来,以强制 Hibernate 在生成的 SQL 中把标识符用引号包围起来。Hibernate 会使用相应的 SQLDialect(方言)来使用正确的引号风格(通常是双引号,但是在 SQL Server 中是括号,MySQL 中是反向引号)。 <class name="LineItem" table="`Line Item`">

  • 以下是降价文本的示例: #“我的标题” !图像标题。{ 样式=“浮动:右; 宽度: 20%; 边框: 1px”} 有的“引用文字”,有的*“强调文字”*等。 在bash脚本中,我试图用法语引号替换任何双引号。 例如:“word”应变成« 换句话说,一个单词前的所有引号都应该替换为一个开放的法语引号,后跟一个不间断的空格;而且一个单词后面的所有引号都要换成一个不换行的空格后面跟着一个闭合的法语引号;