GREP: date/time search and replace

Hi everybody,
I frequently import XML files to InDesign. The XML structure always contains the following information among others:
start date
start time
end date
end time
For example, it looks like this:
21.08.2013
09:00
25.08.2013
18:00
Now I need to re-arrange these fields in one row, just like this:
21.08.2013, 09:00 - 25.08.2013, 18:00
I already found out how to do this via GREP, but I need to go one step further:
If "start date" and "end date" are the same (for example both are "21.08.2013"), I would like to skip the "end date" in the output. It should look like this:
21.08.2013, 09:00 - 18:00
Is there a way to do this via GREP?
Thanks in advance!

This will do it
Trevor
// By Trevor http://forums.adobe.com/thread/1261365?tstart=0
app.doScript("formatDates ()", ScriptLanguage.javascript, undefined, UndoModes.ENTIRE_SCRIPT, "GREP: date/time search and replace");
function formatDates ()
        app.findGrepPreferences = app.changeGrepPreferences = null;
        app.findGrepPreferences.findWhat = "\\d\\d\.\\d\\d\.\\d\\d\\d\\d\r\\d\\d:\\d\\d\r\\d\\d\.\\d\\d\.\\d\\d\\d\\d\r(?=\\d\\d:\\d\\d\r)";
        var doc = app.activeDocument,
              dateFinds = doc.findGrep(),
              l = dateFinds.length, dates;
        while (l--)
                app.findGrepPreferences.findWhat = "(\\d\\d\.\\d\\d\.\\d\\d\\d\\d)";
                dates = dateFinds[l].findGrep();
                app.findGrepPreferences.findWhat = "(\\d\\d\.\\d\\d\.\\d\\d\\d\\d)\r(\\d\\d:\\d\\d)\r(\\d\\d\.\\d\\d\.\\d\\d\\d\\d)\r";
                if (dates[0].contents == dates[1].contents) app.changeGrepPreferences.changeTo = "$1 $2 - ";
                else app.changeGrepPreferences.changeTo = "$1 $2 - $3 ";
                dateFinds[l].changeGrep();

Similar Messages

  • Regular expression to change Hour:Min:Sec time to Min:Sec using the Search and Replace tool

    Hi,
    I think the title says it all, but I've used a script to export a project from an NLE as a html file with a bunch of images and timecodes within table cells. For example, In=00:00:34 and Out=00:01:30 needs to be converted In=0:34 and Out=1:30. I think the Search and Replace is the most simple way of working that, but I've not experience with Regular Expressions (or much in that regard) so would really appreciate if someone could give me a hand writing the Regular Expression I need to achieve this.
    Thanks in advance,
    James

    Okay, so an example row is:
    <tr>
    <td align="left" valign="top"><p align="left"><img src="Snapshot At Event Start [00-01-22-19].jpg"><br>
    <strong>In: </strong>1:22<br>
    <br>
    </p></td>
    <td align="left" valign="top"><p align="left"><img src="Snapshot At Event End [00-01-24-25].jpg"><br>
    <strong>Out: </strong>1:24<br>
    </p></td>
    <td width="100%" align="left" valign="top"><p><strong>Cut to League Video</strong></p>
      <p><strong>Duration</strong>: 2<br>
      <strong></strong></p></td>
    </tr>
    I need to change it to:
    <tr>
    <td align="left" valign="top"><p align="left"><img src="Snapshot At Event Start [00-01-22-19].jpg"><br>
    <strong>In: </strong>1:22 seconds<br>
    <br>
    </p></td>
    <td align="left" valign="top"><p align="left"><img src="Snapshot At Event End [00-01-24-25].jpg"><br>
    <strong>Out: </strong>1:24 seconds<br>
    </p></td>
    <td width="100%" align="left" valign="top"><p><strong>Cut to League Video</strong></p>
      <p><strong>Duration:</strong> 2 seconds<br>
      <strong></strong></p></td>
    </tr>
    The script itself is something I found somewhere on the internet - it's for Sony Vegas.
    I've highlighted the changes with bold underlined italics.
    Thanks for you help, guys,
    James

  • How to get numeric result from 'search and replace' string function

    hii
    i am using search and replace function to get output.my output is of form ' *X0123.3 ' .here i am replacing the term *X01 with space because i need only 23.3 as a result.but i am unable to get that out in the output indicator.i used lot of functions like string to number and so on but i am getting output as zero .can you please suggest me wt to do.i am attaching a copy of my file.
    Attachments:
    Untitled 1.vi ‏25 KB

    Your problem is the fact that you are converting it to an integer, thus loosing the fractional part. You need to use "Fract/Exp String To Number" instead and create a DBL so yor data is 23.3 instead of 23.
    You also don't need to manipulate the string if the initial part is of constant lenght. Just use the offset input as in the figure below.
    Message Edited by altenbach on 07-31-2006 07:02 AM
    LabVIEW Champion . Do more with less code and in less time .
    Attachments:
    ToDBL.png ‏2 KB

  • Search and replace with comma

    Hello All,
    I want some help. Please help me.
    I have comma delimited Data. When I’m converting Sting to Array, If two commas exists in between then its displaying “Zero” (because its array propriety ). Instead of that I want to display “NaN” .
    Please give me any idea to replace comma to NaN. I tried with Search and Replace but it’s not giving as I expected.
    Munna
    Solved!
    Go to Solution.

    Hello GerdW,
    Thanks you so much for your reply.
    I thought, instead of replacing trailing comma by NaN adding comma before string is more better (because to many string manipulations) But, it’s taking more execution time.
    Munna
    Attachments:
    Search and Replace.vi ‏415 KB

  • Case insensitive search and replace using ASP and Oracle database

    I am interested in providing a case insensitive search and replace query in a Active server page. At present data is collected from a html form which passes the text values to a ASP page. The ASP page runs a search (select query) to find if the data is already in the Oracle database, if it isn't the ASP page runs sql (INSERT) to insert the record, if not the page returns a form indicating that the record already exists. At present we can convert the case of new records using the VB UCase() function. But can't do a insensitive search with the existing records. *The Query must be able to utilize ASP variables.
    Any help would be much appreciated.
    David Cheryk
    null

    I can't check your script right now since I'm not on Mac. I recommend you to use FindChangeByList script for CS4 instead (it works with CS3): http://forums.adobe.com/servlet/JiveServlet/download/2080627-12695/FindChangeByListCS4.zip together with Martin Fisher's: http://www.kasyan.ho.com.ua/downloads/RecordFindChange_CS3_Kas.zip
    Use this script to record settings from Text and GREP tabs, then copy and paste them into FindChandgeList.txt file.
    Or, optionally you can use this script: http://www.kasyan.ho.com.ua/find_change_by_queries.html.
    Kasyan

  • Does the labview 8.5 project have a search and replace option that appies to all vi's in the project?

    In 8.2, the only thing the project has to let you search for a vi is "Find vi's on disk", which is redundant since I can do that in windows explorer.  What I want is a way to search for vi's in my application the way the search and replace function works, except I want it to apply to all vi's in a project instead of just the vi's currently loaded in memory.  Do we have this in 8.5?
    -Devin
    I got 99 problems but 8.6 ain't one.

    I'll give an example of what I was trying to do yesterday in 8.2.  I tried to build a source distribution of a large instrument driver.  Since its an instrument driver there is no single top-level vi that contains all vi's - there are different categories of vi's to do different functions on my instrument.  When I'm doing the source distribution I have to do it in several stages since 8.2 doesn't do source distributions right - but thats not really what this post is about.  Anyway, every time I do the distribution I get an error saying CnvrtArrayIntoBitPattern.vi is password protected (and another engineer wrote it and I don't have the password).  So the build fails.  Now I don't know the password, I'll find it out later, but I at least want to know where in the hierarchy this vi is even being called.  I don't know where it is on disk, I don't know what is calling it, it isn't in the project explicitly, it's a dependency.
    If I had a top-level vi that loaded everything, I could just do a search and replace on that vi and find exactly where it is being called in seconds.  But since I am in a project and have no idea where to start looking, there is no way I can find this vi.  Ideally, in 8.5 there would be a search and replace menu option that searches all vi's in a project to find any calls to this vi.  I want to look for all instances of a vi in my project.  It sounds like you still can't really do that in 8.5.
    What I ended up doing is writing a vi that opens all vi's in a folder hierarchy on disk.  I don't know where this vi is, but all vi's in my project are in the same root folder.  So I run my program to open every single project vi.  Then since I know every single vi is open and loaded simultaneously I used the search and replace function on one of them to find all instances of CnvrtArrayIntoBitPattern.vi.  But that is a painstaking process to create a simple search function.
    I think NI is maybe misunderstanding how people are actually using a project.  Not every vi that is being called is going to be explicitly listed in the project.  (Its this same issue that makes source distributions impossible in 8.2 - you can't target dependencies to a support library so every dependency has to be explicitly listed in the project - which is virtually impossible because they are all in different locations and there are hundreds.)  Most people have lots of general purpose vi's they use in many different projects, and they are buried down in code so we aren't even sure where they are all being used.  The new searches you mention assume you already know where the low-level function is and you are looking for their callers.  But sometimes you don't even know where the low level function is.  What if its an NI directory function?  For example, "resample waveform.vi" is an NI function that changed its defaults in 8.2 which meant we had to find every single place we used it and wire "open-interval?" to a constant instead of depending on the default value.  Its in an NI library somewhere and is never listed as a project vi.  So when I needed to find every place through every project that I used this vi, I couldn't do it through  the project manager because there is no search function.  To be practical I add the project-specific vi's to the project, and maybe a couple support directories, but there will always be lots of vi's as dependencies.  But every now and then I'm still going to want to search for one of these vi's.  So in 8.5 there is there still no way to search for vi's that aren't explicitly listed in the project?
    -Devin
    I got 99 problems but 8.6 ain't one.

  • Search and replace string function

    Hello, I am using the "search and replace string" function and it does nt seem to work consistently for me.   I am using it in a situation where I am taking an array of strings, converting this into a spreadsheet string then deleting all of the commas.  Has anyone experienced the same behavior? I have searched through other posts and found other simular faults but none of the fixes worked for this. I can post the code it needed.
    Thanks,
    Andrew

    I agree that commas are often not desirable, especially if your software should also work in countries where comma is used as a decimal seperator.
    Where are the commas coming from? Does (1) each element of the original array have one (or more), do you (2) use comma as seperator if you convert it to a spreadhseet string?
    For (1), you might just strip out the comma for each element right in the loop. For case (2) you would simply use a different separator to begin with, of course.
    Btw: you are abusing a WHILE loop as a FOR loop, because you have a fixed number of iterations. Please replace it with a FOR loop. If you use a FOR loop, LabVIEW can manage memory much more efficiently, because it can allocate the entire output array before the loop starts. For While loops, the total number of iterations is not known to the compiler. (Of course a real program would also stop the loop if an error occurs. In this case you would need to stay woth the WHILE loop. )
    Do you have a simple example how the raw array elements look like. How many commas are there?
    LabVIEW Champion . Do more with less code and in less time .

  • How can I search and replace fonts?

    iOS 7 doesn't support the Adobe workhorse fonts I've most relied on for years, and arbitrarily changes them to iOS built-in fonts when I link my standard documents and templates to the iPhone, via iCloud. There's no apparent logic to how it does this; a Pages document in Minion Pro, a serif font, gets changed to the sans-serif Helvetica. Myriad Pro may come out in Times New Roman. I accept that the iPhone's limited number of fonts makes translation necessary, but does Pages offer a way in which I can search and replace inappropriately substituted fonts for more logical alternatives?

    You noticed the first one yourself: the Found item list seems to randomly jump around the document -- I believe you are correct in your observation it may be due to the object construction order. That tells me, by the way, something about your lot numbers that tou didn't mention: your text is not one continuous long threaded story, but it's all or partially in disconnected etxt frames. The Found list does return everything inside a single story in the correct order, but it goes over each separate story in the order they were constructed.
    The only solution is to gather all of your lot numbers, *re-sort* them according to the page number they appear on (and some sort of Worst Case Scenario is when you might have more than one lot number frame per page; in that case you also need to sort by textframe, top to bottom -- yet even worse is if you also may have these textframes side by side!).
    Only then you have a reliable counting order.
    This isn't too bad. We can just extend the method I offered for sorting top-to-bottom/left-to-right in Re: Working around the frame selection order issue in CS 4 and make it also include page numbers:
    function byPageYX(a,b) {
        var
            aP = a.parentTextFrames[0].parentPage.index,
            bP = b.parentTextFrames[0].parentPage.index,
            aY = a.baseline[0],
            bY = b.baseline[0],
            aX = a.horizontalOffset[1],
            bX = b.horizontalOffset[1],
            dP = aP-bP,
            dy = aY-bY,
            dx = aX-bX;
        return dP?dP:(dy?dy:dx);
    myResults.sort(byPageYX);
    Or something like that.
    As for actually implementing the above I cannot be of any help with Applescript.
    Once we're dealing with sorting I think you're much better off in Javascript anyhow.

  • How Do I Mass Search and Replace Swatch Colors In Entire Indesign CS6 Document?

    I've jumped from CS4 to CS6 and its been a little while since, but just trying to refamiliarize myself with the many Features of Indesign CS6.
    Here's my issue: I have a really old CS4 document I've opened up and saved in CS6. I have to change all swatch colors throughout the document from pantone swatch 295 C to updated pantone swatch 293 C.
    Question, without my having to go through the entire document one object at a time looking for each object, HOW do i perform a Mass search and replace of Color swatch references from 295 C to 293C.
    I thought i could just click swatch properties and update the color... but No... that doesnt work as swatch properties is just grayed out
    I'm sure i've overlooked something but a refresher on how to mass find and replace color in a document would be great.
    Thanks and looking forward to hearing from someone.

    Thanks for the tips.... both seem like good options without my having to purchase a 3rd party software to accomplish this...
    I must admit... Because I've been stuck in Web Design and Motion Graphics for the past couple of years, when I re-opened my old print work from the CS4 days into CS6 it is obvious I have some catch up to do....
    I was almost embarrassed to admit I had forgotten the technique of Alias one color to another using Ink Manager... I had to look it up and found this helpful tutorial http://indesignsecrets.com/alias-one-color-swatch-to-another.php
    Thanks for both solutions....

  • Problem with search and replace

    I'm workin on Windows XP, Dreamwearver 8
    When I do a search and replace in a site, the changes will be
    made correctly, however, the auto date stamp that I'm using on my
    pages will duplicate on random pages and overwrite text This
    doesn't occur on all pages, and isn't connected with the actual
    change I'm making. Has anyone experienced this?

    Ok Gary, but...
    in a SQLWorksheet write:
    ababab
    Now Edit -> Replace search for b , replace with \nb
    Result (the last b is not replaced):
    a
    ba
    bab
    At this point, I want to have my string back on one line: Edit -> Replace search for \n , replace with (nothing here)
    Result: The search text "\n" was not found.
    And to make it work I have to tick the Regular Expressions checkbox (in this case substitute escaped characters is ignored).
    While I agree that "it is good to have a choice", I personally find it confusing: none of the few text editors I use (Linux or OSX) behaves this way.
    Regards.
    Alessandro

  • Batch File Search and Replace a String

    I've written a batch file to handle the copying of files.  I'm trying to reduce the number of parameters that I pass to the batch file.
    I want the batch file to perform a string replace on the directory path that is passed as a parameter to the batch file.
    Here is how I run the batch file:
    COPY_FILE.BAT C:\DATA\FTP_DATA\ACME\IN      (I'm passing directory path "C:\DATA\FTP_DATA\ACME\IN" as parameter %1)
    So my batch file will copy a file to the directory path represented by parameter %1.
    But then I want the file copied to a second directory.  I want the batch file to replace string "FTP_DATA" in the directory path with string "FTP_DATA\ARCHIVE"
    I know I could pass this path as a second parameter, but I want to limit the number of parameters so figured I could have the batch file perform a search and replace on string "FTP_DATA".
    After searching the internet, I thought I found the answer by using the following command in the batch file:
    set ARCHIVE_PATH=%1:FTP_DATA=FTP_DATA\ARCHIVE
    But it doesn't perform a search and replace.  It just appends to the directory path with the following result:
    C:\DATA\FTP_DATA\ACME\IN:FTP_DATA=FTP_DATA\ARCHIVE
    What I want is the this:
    C:\DATA\FTP_DATA\ARCHIVE\ACME\IN
    Any suggestions?

    Your syntax is not correct. Example:
    @echo off
    setlocal enableextensions
    set ARCHIVE_PATH=C:\DATA\FTP_DATA\ACME\IN
    echo %ARCHIVE_PATH%
    set ARCHIVE_PATH=%ARCHIVE_PATH:FTP_DATA=FTP_DATA\ARCHIVE%
    echo %ARCHIVE_PATH%
    endlocal
    -- Bill Stewart [Bill_Stewart]

  • Photos moved from an external HDD to another: Search and replace paths?

    Hi everyone,
    I've been using iPhoto for a few years now and today I have iPhoto '09. I never let iPhoto copy my photos in its library when importing them, since I have most of them stored on an external hard drive. (Also, if the folders within the library would be properly dated like "2008-09-07" and not named like "7-Sep-2008" and "8-Apr-2008" making the former getting listed before the later, and if I could easily manage external volumes, I would be happy. But, I suppose that's a job for Aperture or Lightroom.)
    I have moved my photos from a small 160GB external hard drive to a new 2TB external hard drive. The problem right now is most of my photos in iPhoto can no longer be displayed. It offers me the option to locate a file every time I open a photo, which I can do, but doing the same task for each and every picture among thousands is daunting.
    To manage photos not stored within its library, iPhoto creates an alias to each picture file. I found a Bash script allowing me to perform a search and replace on all symbolic links in a specific directory. However, the problem is aliases are not the same as symbolic links.
    Is there any way for me to perform a search and replace on all the aliases within the iPhoto library in order to make them point to the new hard drive now containing the pictures?
    By the way, I'm also having a similar problem with iTunes:
    http://discussions.apple.com/thread.jspa?threadID=2190505

    This issue is the main reason why I never recommend a Referenced Library. Some folks have had success using an app called _[File Buddy|http://www.skytag.com/filebuddy]_ to reconnect the aliases. If that fails then I'm afraid then you will find yourself reconnecting them manually.
    Running a Managed Library this issue simply doesn;t arise. And of course, you can easily run a Library from an external disk and easily move Libraries between disks.
    Should you wish to consider converting from a Referenced to a Managed library, then AliasHerder is an application that will replace these aliases with the actual files, and so preserve your Library and all your work in it. As always: back up first.
    (Also, if the folders within the library would be properly dated like "2008-09-07" and not named like "7-Sep-2008" and "8-Apr-2008" making the former getting listed before the later, and if I could easily manage external volumes, I would be happy. But, I suppose that's a job for Aperture or Lightroom.)
    How iPhoto names the folders within the Library Package is irrelevant as you never access them that way.
    There are many, many ways to access your files in iPhoto:
    *For Users of 10.5 and later*
    You can use any Open / Attach / Browse dialogue. On the left there's a Media heading, your pics can be accessed there. Command-Click for selecting multiple pics.
    Uploaded with plasq's Skitch!
    You can access the Library from the New Message Window in Mail:
    Uploaded with plasq's Skitch!
    *For users of 10.4 and later* ...
    Many internet sites such as Flickr and SmugMug have plug-ins for accessing the iPhoto Library. If the site you want to use doesn’t then some, one or any of these will also work:
    To upload to a site that does not have an iPhoto Export Plug-in the recommended way is to Select the Pic in the iPhoto Window and go File -> Export and export the pic to the desktop, then upload from there. After the upload you can trash the pic on the desktop. It's only a copy and your original is safe in iPhoto.
    This is also true for emailing with Web-based services. However, if you're using Gmail you can use iPhoto2GMail
    If you use Apple's Mail, Entourage, AOL or Eudora you can email from within iPhoto.
    If you use a Cocoa-based Browser such as Safari, you can drag the pics from the iPhoto Window to the Attach window in the browser.
    *If you want to access the files with iPhoto not running*:
    For users of 10.6 and later:
    You can download a free Services component from MacOSXAutomation which will give you access to the iPhoto Library from your Services Menu. Using the Services Preference Pane you can even create a keyboard shortcut for it.
    For Users of 10.4 and later:
    Create a Media Browser using Automator (takes about 10 seconds) or use this free utility Karelia iMedia Browser
    Other options include:
    1. *Drag and Drop*: Drag a photo from the iPhoto Window to the desktop, there iPhoto will make a full-sized copy of the pic.
    2. *File -> Export*: Select the files in the iPhoto Window and go File -> Export. The dialogue will give you various options, including altering the format, naming the files and changing the size. Again, producing a copy.
    3. *Show File*: Right- (or Control-) Click on a pic and in the resulting dialogue choose 'Show File'. A Finder window will pop open with the file already selected.
    Regards
    TD

  • Search and replace, everey second character?

    I'm making a VI that is communicating with an external device through a protocol built up of frames. I have made a couple of subVIs that put these frames together as hexadecimal strings that are then converted into numbers and passed on to the device. The protocol uses an escape character in order to avoid sending an BOF or EOF constant at the wrong time. I've made a subVI that is supposed to do this using the Serch and Replace function. At first it seems rather elegant, but it has a fatal flaw, if one of the characters it is supposed to hide is written across the edge of a byte, it will still be replaced.
    Example:
    11 01 00 EC 0D EA 05 08
    is replaced by
    11 01 00 E7 DE 0D EA 05 08
    C0, C1, 7D are the characters to be replaced, 7D is the escape character.
    Now I wonder, is it possible to make the search and replace function search only every second character in a string?
    Solved!
    Go to Solution.
    Attachments:
    Insert_Escape_Characters.vi ‏10 KB

    Hi,
    I'm not sure to understand your problem, but I propose this solution !
    Hope it helps you.
    Best regards,
    Vincent
    Message Edité par ramses64 le 02-20-2009 03:57 AM
    V-F
    Attachments:
    replace.PNG ‏17 KB

  • GUI Based tool for search and replace using regular expression

    Hi,
    I have developed this small tool which can be used for search and replace in multiple files using reqular expressions.
    Features:
    1. Full regular expression
    2. GUI based with Highlighted results
    3. Preview for replace available
    4. Pure Java based.
    5. Its like unix sed and grep
    Please visit below site for download/more information :
    http://sourceforge.net/projects/regexsearchrepl/
    Thanks,
    Hitesh Viseria

    I agree with you, it cannot compete grep/sed/awk combination. I couldnt find anything even close to grep/sed for windows which will also have a preview and most important, free. That is what made me write this tool. I am trying to
    improve its performance and more features like history etc.
    Any suggestions on additional features are most welcome.

  • Search and Replace help. Please

    I have imported some text where in the original there is italic content but when bringing into IDCS4 that italic text shows up as _italic words_. That is as roman with _ characters surrounding it. Is there a way to search and replace. Needless to say the text between the _s varies.

    I would try a GREP find/change searching for (_)([^_]+)(_) and replace with $2 Set the change formatting to italics (preferably as a character style).  This translates to look for a _, then anything that is not a _, followed by another _, and replace with only the stuff in between. You can also use (_)(.+?)(_) which would match the shortest srting in between two _ characters in the same way (except it won't cross a paragraph break), but it will run a bit slower.
    Credit for this should go to Peter Kahrel and his excellent GREP primer....

Maybe you are looking for