Php 正则表达式,用于搜索后跟某个集合的任何符号的单词
我想写一个正则表达式来检查字符串中后跟Php 正则表达式,用于搜索后跟某个集合的任何符号的单词,php,regex,Php,Regex,我想写一个正则表达式来检查字符串中后跟?,:但是我尝试了很多东西,但似乎没有任何东西能正常工作。。 我想到的最好的方法是:\\b([a-zA-Z]*)([\:]\124;[\?])\ 测试短语?就是这样!测试是否一切正常?工作 我正在编写一个函数,它来自上面的示例语句,结果如下: array( [0] => phrase, [1] => array( [0] => something, [1] => like this
?,:代码>但是我尝试了很多东西,但似乎没有任何东西能正常工作。。
我想到的最好的方法是:\\b([a-zA-Z]*)([\:]\124;[\?])\
测试短语?就是这样!测试是否一切正常?工作
我正在编写一个函数,它来自上面的示例语句,结果如下:
array(
[0] => phrase,
[1] => array(
[0] => something,
[1] => like this,
[2] => everything
)
您可以尝试以下方法:
\b\w+\b(?=[!:?])
这将为您的测试句子生成以下结果:
'phrase', 'something', 'this', 'everything'
您有一个初始单词边界(\b
),但在查找之前您没有完成单词代码>,:
或?
。这些标点符号在给定的单词中不匹配
此外,[!:?]
默认情况下只匹配这三个标点符号中的任何一个,因此您不需要or(|
)
如果要匹配这三个标点符号之前的每个完整短语/句子,可以尝试以下正则表达式:
\w[\w\s]+?(?=[!:?])
这将给你:
'The test phrase', 'is something', 'like this', 'to test whether everything'
我会去的
(\w+)[?!:]
如果您只想确保一个单词后面跟着一个?!:代码>。不需要前瞻,检查单词边界或其他事情(永远记住:保持简单和愚蠢!)。
关于您对以下内容的评论:
一个正则表达式,如果单词有一个值,它只返回单个单词?当有一个带“:”的单词时,它会返回几个单词?当有一个带“:”的单词时,我想把这个单词和后面的每个单词都记下来,直到下一个
这是完全可能的:
(\w+)\?|(\w+):\s?(.+?)!
再次强调:保持它的简单和愚蠢,但是请注意,如果有嵌套的:?,这将失败代码>在a:abc代码>块
例如句子i:will?失败
不会给你单曲will
,它会给你i
和will?失败
说明:
(\w+)\? #every word which is followed by a ?
| #OR
(\w+) #every word
: #which is followed by a :
\s? #and an optional whitespace
(.+?) #every character
! #until a ! is encountered
好吧,你已经帮了我很大的忙了!尽管我还有一个问题:是否有可能创建一个结合了您给出的两个结果的正则表达式。我的意思是,一个正则表达式,如果单词有?当有一个带“:”的单词时,它会返回几个单词?当有一个带“:”的单词时,我想把这个单词和后面的每个单词都记下来,直到下一个!我可以用两个正则表达式和一些操作编写一个函数,但我想知道这是否可以用一个正则表达式来完成。@user3156386那么你的意思是你只需要(1)问号前面的每个单词,(2)冒号和感叹号之间的每个短语/句子吗?因为这是你在这里提出的第五个问题,我会开始接受答案(答案左边的复选标记就在投票下面),因为当许多用户看到你不接受问题的给定答案时,他们不会帮助你。但请记住:永远接受对你帮助最大的答案!如果没有一个答案解决了你的问题,那么不接受答案是完全正确的!