首页 \ 问答 \ 什么是好的Perl模式匹配/正则表达式模块?(What are good Perl Pattern-matching / Regex Modules?)

什么是好的Perl模式匹配/正则表达式模块?(What are good Perl Pattern-matching / Regex Modules?)

最近我一直需要做很多正则表达式/模式匹配的东西,并且从我的网页搜索中查看不同的示例/论坛帖子,似乎人们有时会提到perl有很好的模块来帮助简化模式匹配/正则表达式的任务,但他们忽略提及哪些是最好的..我已经看过CPAN这个,但他们的网站是不是很容易导航,因为我似乎无法有效地搜索类别..任何意见是赞赏。


I've been having a need to do a lot of regex / pattern-matching stuff lately and, in looking at different examples / forum posts from my web searches it seems people sometimes mention that perl has good modules to help in simplifying pattern matching / regex tasks, however they neglect to mention which ones are the best for this.. I have looked at CPAN for this but their site isn't very easy to navigate as I can't seem to search effectively by category.. any advice is appreciated.


原文:https://stackoverflow.com/questions/3258847
更新时间:2023-10-17 18:10

最满意答案

由于您试图将树放入表的一部分,看起来您无论如何都需要使用SET IDENTITY_INSERT ON 。 您需要确保新树有空间。 在这种情况下,我假设49是表中当前的最大id ,因此我们不需要担心超出表中后面的树。

您需要能够将ID从旧树映射到新树。 除非有一些围绕id的规则,只要它准确,确切的映射应该是无关紧要的,所以在这种情况下,我只是做这样的事情:

SET IDENTITY_INSERT dbo.Relations ON

;WITH CTE_MappedIDs AS
(
    SELECT
        old_id,
        ROW_NUMBER() OVER(ORDER BY old_id) + 49 AS new_id
    FROM
    (
        SELECT DISTINCT parent AS old_id FROM #relationtree
        UNION
        SELECT DISTINCT child AS old_id FROM #relationtree
    ) SQ
)
INSERT INTO dbo.Relations (Id, ParentId)
SELECT
    CID.new_id,
    PID.new_id
FROM
    #relationtree RT
INNER JOIN CTE_MappedIDs PID ON PID.old_id = RT.parent
INNER JOIN CTE_MappedIDs CID ON CID.old_id = RT.parent
-- We need to also add the root node
UNION ALL
SELECT
    NID.new_id,
    NULL
FROM
    #relationtree RT2
INNER JOIN CTE_MappedIDs NID ON NID.old_id = RT2.parent
WHERE
    RT2.parent NOT IN (SELECT DISTINCT child FROM #relationtree)

SET IDENTITY_INSERT dbo.Relations OFF

我没有测试过,但如果它没有按预期工作,那么希望它能指出你正确的方向。


Since you're trying to put the tree into a segment of the table it looks like you're going to need to use SET IDENTITY_INSERT ON for the table anyway. You're going to need to make sure that there is room for the new tree. In this case, I'll assume that 49 is the current maximum id in your table so that we don't need to be concerned with overrunning a tree that's later in the table.

You'll need to be able to map the IDs from the old tree to the new tree. Unless there's some rule around the ids, the exact mapping should be irrelevant as long as it's accurate, so in that case, I'd just do something like this:

SET IDENTITY_INSERT dbo.Relations ON

;WITH CTE_MappedIDs AS
(
    SELECT
        old_id,
        ROW_NUMBER() OVER(ORDER BY old_id) + 49 AS new_id
    FROM
    (
        SELECT DISTINCT parent AS old_id FROM #relationtree
        UNION
        SELECT DISTINCT child AS old_id FROM #relationtree
    ) SQ
)
INSERT INTO dbo.Relations (Id, ParentId)
SELECT
    CID.new_id,
    PID.new_id
FROM
    #relationtree RT
INNER JOIN CTE_MappedIDs PID ON PID.old_id = RT.parent
INNER JOIN CTE_MappedIDs CID ON CID.old_id = RT.parent
-- We need to also add the root node
UNION ALL
SELECT
    NID.new_id,
    NULL
FROM
    #relationtree RT2
INNER JOIN CTE_MappedIDs NID ON NID.old_id = RT2.parent
WHERE
    RT2.parent NOT IN (SELECT DISTINCT child FROM #relationtree)

SET IDENTITY_INSERT dbo.Relations OFF

I haven't tested that, but if it doesn't work as expected then hopefully it will point you in the right direction.

相关文章

更多

最新问答

更多
  • 获取MVC 4使用的DisplayMode后缀(Get the DisplayMode Suffix being used by MVC 4)
  • 如何通过引用返回对象?(How is returning an object by reference possible?)
  • 矩阵如何存储在内存中?(How are matrices stored in memory?)
  • 每个请求的Java新会话?(Java New Session For Each Request?)
  • css:浮动div中重叠的标题h1(css: overlapping headlines h1 in floated divs)
  • 无论图像如何,Caffe预测同一类(Caffe predicts same class regardless of image)
  • xcode语法颜色编码解释?(xcode syntax color coding explained?)
  • 在Access 2010 Runtime中使用Office 2000校对工具(Use Office 2000 proofing tools in Access 2010 Runtime)
  • 从单独的Web主机将图像传输到服务器上(Getting images onto server from separate web host)
  • 从旧版本复制文件并保留它们(旧/新版本)(Copy a file from old revision and keep both of them (old / new revision))
  • 西安哪有PLC可控制编程的培训
  • 在Entity Framework中选择基类(Select base class in Entity Framework)
  • 在Android中出现错误“数据集和渲染器应该不为null,并且应该具有相同数量的系列”(Error “Dataset and renderer should be not null and should have the same number of series” in Android)
  • 电脑二级VF有什么用
  • Datamapper Ruby如何添加Hook方法(Datamapper Ruby How to add Hook Method)
  • 金华英语角.
  • 手机软件如何制作
  • 用于Android webview中图像保存的上下文菜单(Context Menu for Image Saving in an Android webview)
  • 注意:未定义的偏移量:PHP(Notice: Undefined offset: PHP)
  • 如何读R中的大数据集[复制](How to read large dataset in R [duplicate])
  • Unity 5 Heighmap与地形宽度/地形长度的分辨率关系?(Unity 5 Heighmap Resolution relationship to terrain width / terrain length?)
  • 如何通知PipedOutputStream线程写入最后一个字节的PipedInputStream线程?(How to notify PipedInputStream thread that PipedOutputStream thread has written last byte?)
  • python的访问器方法有哪些
  • DeviceNetworkInformation:哪个是哪个?(DeviceNetworkInformation: Which is which?)
  • 在Ruby中对组合进行排序(Sorting a combination in Ruby)
  • 网站开发的流程?
  • 使用Zend Framework 2中的JOIN sql检索数据(Retrieve data using JOIN sql in Zend Framework 2)
  • 条带格式类型格式模式编号无法正常工作(Stripes format type format pattern number not working properly)
  • 透明度错误IE11(Transparency bug IE11)
  • linux的基本操作命令。。。