所以,我刚刚开始理解正则表达式,我发现学习曲线相当陡峭.但是,stackoverflow在我的实验过程中非常有用.我想写一个特定的单词宏,但我还没有想出办法.我希望能够在一个文档中找到彼此10个左右的单词中的两个单词,然后将这些单词用斜体字表示,如果这些单词的间隔超过10个单词或者顺序不同,我希望宏不要斜体那些话.
我一直在使用以下正则表达式:
\bPanama\W+(?:\w+\W+){0,10}?Canal\b
Run Code Online (Sandbox Code Playgroud)
然而,它只允许我操纵整个字符串作为一个整体,包括其间的随机单词.此外,.Replace函数只允许我用不同的字符串替换该字符串而不更改格式样式.
有经验的人是否知道如何使这项工作?它甚至可以吗?
编辑:这是我到目前为止.我有两个问题.首先,我不知道如何仅从匹配的正则表达式中选择单词"Panama"和"Canal",并仅替换那些单词(而不是中间单词).其次,我只是不知道如何替换与不同格式匹配的正则表达式,只有不同的文本字符串 - 可能只是因为对单词宏不熟悉.
Sub RegText()
Dim re As regExp
Dim para As Paragraph
Dim rng As Range
Set re = New regExp
re.Pattern = "\bPanama\W+(?:\w+\W+){0,10}?Canal\b"
re.IgnoreCase = True
re.Global = True
For Each para In ActiveDocument.Paragraphs
Set rng = para.Range
rng.MoveEnd unit:=wdCharacter, Count:=-1
Text$ = rng.Text + "Modified"
rng.Text = re.Replace(rng.Text, Text$)
Next para
End Sub
Run Code Online (Sandbox Code Playgroud)
好的,感谢蒂姆·威廉姆斯的帮助下面我得到了以下解决方案,它在某些方面有点笨拙并且它绝不是纯粹的正则表达式,但它确实完成了工作.如果有人有更好的解决方案或想法如何解决这个问题,我会很高兴听到它.再一次,我的粗暴强迫搜索和替换功能的变化是一个有点令人尴尬的粗糙,但至少它的工作原理...
Sub RegText()
Dim re As regExp
Dim para As Paragraph
Dim rng As Range
Dim txt …Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 C# 中的 newtonsoft 解析相当复杂/不必要的复杂 JSON 输出,但由于某种原因,我的解析器总是返回 null,并且没有详细说明为什么会出现这种情况。
我尝试解析的 JSON 文件的示例:
{
"response": {
"success": 1,
"current_time": 1362339098,
"prices": {
"35": {
"11": {
"0": {
"current": {
"currency": "keys",
"value": 39,
"value_high": 41,
"date": 1357515306
},
"previous": {
"currency": "keys",
"value": 37,
"value_high": 39
}
}
},
"3": {
"0": {
"current": {
"currency": "metal",
"value": 0.33,
"value_high": 0.66
}
}
}
},
"5002": {
"6": {
"0": {
"current": {
"currency": "usd",
"value": 0.39,
"value_high": 0.42,
"date": 1358090106 …Run Code Online (Sandbox Code Playgroud)