我正在尝试清理一些带有分隔符的文本,该分隔符前后没有分隔符。
“类型”是
3150779 | 3674-4 |Water Supply Plan
3637730 |
| 10903-155 | Layout 10903 DWG 155 29 M |
| 10903-155 | | Water Supply |
我知道[^\|]+
对此进行了拆分,但是当分隔符之前/之后没有文本时,我想摆脱分隔符。所以正则表达式应该导致
3150779 | 3674-4 | Water Supply Plan
3637730
10903-155 | Layout 10903 DWG 155 29 M
10903-155 | Water Supply
我想将其应用于Google工作表中,其中已清除的文本仅进入一列。
请参见https://regex101.com/r/GzbCEU/1
我也尝试过[\s]+\|\s(.*)
,这会选择分隔符,但不会清除文本。
---更新--- 当我尝试Pushpesh Kumar Rajwanshi的建议时,我对GSheet毫无价值。
也是同样的问题
答案 0 :(得分:2)
您可以使用此正则表达式,
^ *(?:\| *)+| *(?:\| *)+$|(\| *){2,}
说明:
共有三个部分,分别处理三种情况。
^ *(?:\| *)+
-这个替换开头的所有|
,中间可以有空格|
-交替*(?:\| *)+$
-这个替换了最后所有|
,中间可以有空格(\| *){2,}
-此替换|
的所有两个以上的$1
,它们之间可以有间隔,但保留最后的间隔。然后将其替换为在Google表格中工作的$1
。
请注意,只有在第三轮替组中匹配|
的情况下,才用|
进行替换,在替换组中,$('.ui-datepicker-current-day').click();
仅保留一个$("#datepicker").trigger("click");
。
编辑:显示如何使用正则表达式查找/替换的屏幕截图,
更换前
更换后
答案 1 :(得分:1)
我认为这应该为您工作:
/[ ]*(?<![\d][ \*])\| | \|$/gm
Demo(确保打开演示页面底部的“ Substitution”手风琴以查看输出)
$re = '/[ ]*(?<![\d][ \*])\| | \|$/m';
$str = '3150779 | 3674-4 | Water Supply Plan
3637730 |
| 10903-155 | Layout 10903 DWG 155 29 M |
| 10903-155 | | Water Supply |';
preg_match_all($re, $str, $matches, PREG_SET_ORDER, 0);
// Print the entire match result
var_dump($matches);
输出:
3150779 | 3674-4 | Water Supply Plan
3637730
10903-155 | Layout 10903 DWG 155 29 M
10903-155 |Water Supply